Spaces:
Runtime error
Runtime error
File size: 249,254 Bytes
976166f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 |
{
"cells": [
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"import api\n",
"import datetime as dt\n",
"from datetime import datetime, timedelta\n",
"import pandas as pd\n",
"from sqlalchemy import create_engine"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"db_url = \"sqlite:///../local.db\""
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"## test create portoflio profile\n",
"stocks = [\n",
" dict(ticker=\"002709.XSHE\", shares=100, date=datetime(2021,1,5)),\n",
" dict(ticker=\"002920.XSHE\", shares=100, date=datetime(2021,1,5)),\n",
" dict(ticker=\"300274.XSHE\", shares=100, date=datetime(2021,1,5)),\n",
" dict(ticker='600409.XSHG', shares=100, date=datetime(2021,1,5)),\n",
" dict(ticker='600415.XSHG', shares=100, date=datetime(2021,1,5)),\n",
" dict(ticker='603882.XSHG', shares=100, date=datetime(2021,1,5))\n",
"]\n",
"p_portfolio, error = api.update_portfolio_profile(stocks)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"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>ticker</th>\n",
" <th>shares</th>\n",
" <th>date</th>\n",
" <th>sector</th>\n",
" <th>aggregate_sector</th>\n",
" <th>display_name</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>002709.XSHE</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>电气设备I 电池II 电池化学品III 化学原料和化学制品制造业 电池部件及材料 工业</td>\n",
" <td>工业</td>\n",
" <td>天赐材料</td>\n",
" <td>TCCL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>002920.XSHE</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>计算机I 软件开发II 垂直应用软件III 汽车制造业 汽车电子 可选消费</td>\n",
" <td>信息与通信</td>\n",
" <td>德赛西威</td>\n",
" <td>DSXW</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>300274.XSHE</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>电气设备I 光伏设备II 逆变器III 电气机械和器材制造业 光伏设备 工业</td>\n",
" <td>工业</td>\n",
" <td>阳光电源</td>\n",
" <td>YGDY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>600409.XSHG</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>化工I 化学原料II 纯碱III 化学原料和化学制品制造业 粘胶 原材料</td>\n",
" <td>原料与能源</td>\n",
" <td>三友化工</td>\n",
" <td>SYHG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>600415.XSHG</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>商业贸易I 一般零售II 商业物业经营III 商务服务业 市场服务 工业</td>\n",
" <td>消费</td>\n",
" <td>小商品城</td>\n",
" <td>XSPC</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>603882.XSHG</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>医药生物I 医疗服务II 诊断服务III 卫生 体外诊断 医药卫生</td>\n",
" <td>医药卫生</td>\n",
" <td>金域医学</td>\n",
" <td>JYYX</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ticker shares date \\\n",
"0 002709.XSHE 100 2021-01-05 \n",
"1 002920.XSHE 100 2021-01-05 \n",
"2 300274.XSHE 100 2021-01-05 \n",
"3 600409.XSHG 100 2021-01-05 \n",
"4 600415.XSHG 100 2021-01-05 \n",
"5 603882.XSHG 100 2021-01-05 \n",
"\n",
" sector aggregate_sector display_name \\\n",
"0 电气设备I 电池II 电池化学品III 化学原料和化学制品制造业 电池部件及材料 工业 工业 天赐材料 \n",
"1 计算机I 软件开发II 垂直应用软件III 汽车制造业 汽车电子 可选消费 信息与通信 德赛西威 \n",
"2 电气设备I 光伏设备II 逆变器III 电气机械和器材制造业 光伏设备 工业 工业 阳光电源 \n",
"3 化工I 化学原料II 纯碱III 化学原料和化学制品制造业 粘胶 原材料 原料与能源 三友化工 \n",
"4 商业贸易I 一般零售II 商业物业经营III 商务服务业 市场服务 工业 消费 小商品城 \n",
"5 医药生物I 医疗服务II 诊断服务III 卫生 体外诊断 医药卫生 医药卫生 金域医学 \n",
"\n",
" name \n",
"0 TCCL \n",
"1 DSXW \n",
"2 YGDY \n",
"3 SYHG \n",
"4 XSPC \n",
"5 JYYX "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p_portfolio"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"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>ticker</th>\n",
" <th>shares</th>\n",
" <th>date</th>\n",
" <th>sector</th>\n",
" <th>aggregate_sector</th>\n",
" <th>display_name</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>002709.XSHE</td>\n",
" <td>200</td>\n",
" <td>2022-01-10</td>\n",
" <td>电气设备I 电池II 电池化学品III 化学原料和化学制品制造业 电池部件及材料 工业</td>\n",
" <td>工业</td>\n",
" <td>天赐材料</td>\n",
" <td>TCCL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>002920.XSHE</td>\n",
" <td>200</td>\n",
" <td>2022-01-10</td>\n",
" <td>计算机I 软件开发II 垂直应用软件III 汽车制造业 汽车电子 可选消费</td>\n",
" <td>信息与通信</td>\n",
" <td>德赛西威</td>\n",
" <td>DSXW</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>300274.XSHE</td>\n",
" <td>200</td>\n",
" <td>2022-01-10</td>\n",
" <td>电气设备I 光伏设备II 逆变器III 电气机械和器材制造业 光伏设备 工业</td>\n",
" <td>工业</td>\n",
" <td>阳光电源</td>\n",
" <td>YGDY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>600409.XSHG</td>\n",
" <td>200</td>\n",
" <td>2022-01-10</td>\n",
" <td>化工I 化学原料II 纯碱III 化学原料和化学制品制造业 粘胶 原材料</td>\n",
" <td>原料与能源</td>\n",
" <td>三友化工</td>\n",
" <td>SYHG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>600415.XSHG</td>\n",
" <td>200</td>\n",
" <td>2022-01-10</td>\n",
" <td>商业贸易I 一般零售II 商业物业经营III 商务服务业 市场服务 工业</td>\n",
" <td>消费</td>\n",
" <td>小商品城</td>\n",
" <td>XSPC</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>603882.XSHG</td>\n",
" <td>200</td>\n",
" <td>2022-01-10</td>\n",
" <td>医药生物I 医疗服务II 诊断服务III 卫生 体外诊断 医药卫生</td>\n",
" <td>医药卫生</td>\n",
" <td>金域医学</td>\n",
" <td>JYYX</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>002709.XSHE</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>电气设备I 电池II 电池化学品III 化学原料和化学制品制造业 电池部件及材料 工业</td>\n",
" <td>工业</td>\n",
" <td>天赐材料</td>\n",
" <td>TCCL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>002920.XSHE</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>计算机I 软件开发II 垂直应用软件III 汽车制造业 汽车电子 可选消费</td>\n",
" <td>信息与通信</td>\n",
" <td>德赛西威</td>\n",
" <td>DSXW</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>300274.XSHE</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>电气设备I 光伏设备II 逆变器III 电气机械和器材制造业 光伏设备 工业</td>\n",
" <td>工业</td>\n",
" <td>阳光电源</td>\n",
" <td>YGDY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>600409.XSHG</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>化工I 化学原料II 纯碱III 化学原料和化学制品制造业 粘胶 原材料</td>\n",
" <td>原料与能源</td>\n",
" <td>三友化工</td>\n",
" <td>SYHG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>600415.XSHG</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>商业贸易I 一般零售II 商业物业经营III 商务服务业 市场服务 工业</td>\n",
" <td>消费</td>\n",
" <td>小商品城</td>\n",
" <td>XSPC</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>603882.XSHG</td>\n",
" <td>100</td>\n",
" <td>2021-01-05</td>\n",
" <td>医药生物I 医疗服务II 诊断服务III 卫生 体外诊断 医药卫生</td>\n",
" <td>医药卫生</td>\n",
" <td>金域医学</td>\n",
" <td>JYYX</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ticker shares date \\\n",
"0 002709.XSHE 200 2022-01-10 \n",
"1 002920.XSHE 200 2022-01-10 \n",
"2 300274.XSHE 200 2022-01-10 \n",
"3 600409.XSHG 200 2022-01-10 \n",
"4 600415.XSHG 200 2022-01-10 \n",
"5 603882.XSHG 200 2022-01-10 \n",
"6 002709.XSHE 100 2021-01-05 \n",
"7 002920.XSHE 100 2021-01-05 \n",
"8 300274.XSHE 100 2021-01-05 \n",
"9 600409.XSHG 100 2021-01-05 \n",
"10 600415.XSHG 100 2021-01-05 \n",
"11 603882.XSHG 100 2021-01-05 \n",
"\n",
" sector aggregate_sector display_name \\\n",
"0 电气设备I 电池II 电池化学品III 化学原料和化学制品制造业 电池部件及材料 工业 工业 天赐材料 \n",
"1 计算机I 软件开发II 垂直应用软件III 汽车制造业 汽车电子 可选消费 信息与通信 德赛西威 \n",
"2 电气设备I 光伏设备II 逆变器III 电气机械和器材制造业 光伏设备 工业 工业 阳光电源 \n",
"3 化工I 化学原料II 纯碱III 化学原料和化学制品制造业 粘胶 原材料 原料与能源 三友化工 \n",
"4 商业贸易I 一般零售II 商业物业经营III 商务服务业 市场服务 工业 消费 小商品城 \n",
"5 医药生物I 医疗服务II 诊断服务III 卫生 体外诊断 医药卫生 医药卫生 金域医学 \n",
"6 电气设备I 电池II 电池化学品III 化学原料和化学制品制造业 电池部件及材料 工业 工业 天赐材料 \n",
"7 计算机I 软件开发II 垂直应用软件III 汽车制造业 汽车电子 可选消费 信息与通信 德赛西威 \n",
"8 电气设备I 光伏设备II 逆变器III 电气机械和器材制造业 光伏设备 工业 工业 阳光电源 \n",
"9 化工I 化学原料II 纯碱III 化学原料和化学制品制造业 粘胶 原材料 原料与能源 三友化工 \n",
"10 商业贸易I 一般零售II 商业物业经营III 商务服务业 市场服务 工业 消费 小商品城 \n",
"11 医药生物I 医疗服务II 诊断服务III 卫生 体外诊断 医药卫生 医药卫生 金域医学 \n",
"\n",
" name \n",
"0 TCCL \n",
"1 DSXW \n",
"2 YGDY \n",
"3 SYHG \n",
"4 XSPC \n",
"5 JYYX \n",
"6 TCCL \n",
"7 DSXW \n",
"8 YGDY \n",
"9 SYHG \n",
"10 XSPC \n",
"11 JYYX "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## test update portfolio profile\n",
"stocks = [\n",
" dict(ticker=\"002709.XSHE\", shares=200, date=datetime(2022,1,10)),\n",
" dict(ticker=\"002920.XSHE\", shares=200, date=datetime(2022,1,10)),\n",
" dict(ticker=\"300274.XSHE\", shares=200, date=datetime(2022,1,10)),\n",
" dict(ticker='600409.XSHG', shares=200, date=datetime(2022,1,10)),\n",
" dict(ticker='600415.XSHG', shares=200, date=datetime(2022,1,10)),\n",
" dict(ticker='603882.XSHG', shares=200, date=datetime(2022,1,10))\n",
"]\n",
"p_profile, error = api.update_portfolio_profile(stocks, p_portfolio)\n",
"p_profile"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"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>date</th>\n",
" <th>weight</th>\n",
" <th>display_name</th>\n",
" <th>ticker</th>\n",
" <th>sector</th>\n",
" <th>aggregate_sector</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.088</td>\n",
" <td>神州高铁</td>\n",
" <td>000008.XSHE</td>\n",
" <td>机械设备I 运输设备II 铁路设备III 铁路、船舶、航空航天和其他运输设备制造业 城轨铁路 工业</td>\n",
" <td>工业</td>\n",
" <td>SZGT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.344</td>\n",
" <td>中国宝安</td>\n",
" <td>000009.XSHE</td>\n",
" <td>电气设备I 电池II 电池化学品III 综合 工业集团企业 工业</td>\n",
" <td>工业</td>\n",
" <td>ZGBA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.180</td>\n",
" <td>南玻A</td>\n",
" <td>000012.XSHE</td>\n",
" <td>建筑材料I 玻璃制造II 玻璃制造III 非金属矿物制品业 玻璃 原材料</td>\n",
" <td>原料与能源</td>\n",
" <td>NBA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.297</td>\n",
" <td>深科技</td>\n",
" <td>000021.XSHE</td>\n",
" <td>电子I 电子制造II 消费电子零部件及组装III 计算机、通信和其他电子设备制造业 安防设备...</td>\n",
" <td>信息与通信</td>\n",
" <td>SKJ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.030</td>\n",
" <td>招商港口</td>\n",
" <td>001872.XSHE</td>\n",
" <td>交通运输I 航运港口II 港口III 水上运输业 港口 工业</td>\n",
" <td>工业</td>\n",
" <td>ZSGK</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>495</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.438</td>\n",
" <td>睿创微纳</td>\n",
" <td>688002.XSHG</td>\n",
" <td>国防军工I 军工电子II 军工电子III 计算机、通信和其他电子设备制造业 集成电路设计 信息技术</td>\n",
" <td>工业</td>\n",
" <td>RCWN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>496</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.287</td>\n",
" <td>晶晨股份</td>\n",
" <td>688099.XSHG</td>\n",
" <td>电子I 半导体II 数字芯片设计III 软件和信息技术服务业 集成电路设计 信息技术</td>\n",
" <td>信息与通信</td>\n",
" <td>JCGF</td>\n",
" </tr>\n",
" <tr>\n",
" <th>497</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.252</td>\n",
" <td>虹软科技</td>\n",
" <td>688088.XSHG</td>\n",
" <td>计算机I IT服务II IT服务III 软件和信息技术服务业 通用软件 信息技术</td>\n",
" <td>信息与通信</td>\n",
" <td>HRKJ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>498</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.134</td>\n",
" <td>微芯生物</td>\n",
" <td>688321.XSHG</td>\n",
" <td>医药生物I 化学制药II 化学制剂III 医药制造业 药品制剂 医药卫生</td>\n",
" <td>医药卫生</td>\n",
" <td>WXSW</td>\n",
" </tr>\n",
" <tr>\n",
" <th>499</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.130</td>\n",
" <td>南微医学</td>\n",
" <td>688029.XSHG</td>\n",
" <td>医药生物I 医疗器械II 医疗耗材III 专用设备制造业 医疗耗材 医药卫生</td>\n",
" <td>医药卫生</td>\n",
" <td>NWYX</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>500 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" date weight display_name ticker \\\n",
"0 2020-12-31 0.088 神州高铁 000008.XSHE \n",
"1 2020-12-31 0.344 中国宝安 000009.XSHE \n",
"2 2020-12-31 0.180 南玻A 000012.XSHE \n",
"3 2020-12-31 0.297 深科技 000021.XSHE \n",
"4 2020-12-31 0.030 招商港口 001872.XSHE \n",
".. ... ... ... ... \n",
"495 2020-12-31 0.438 睿创微纳 688002.XSHG \n",
"496 2020-12-31 0.287 晶晨股份 688099.XSHG \n",
"497 2020-12-31 0.252 虹软科技 688088.XSHG \n",
"498 2020-12-31 0.134 微芯生物 688321.XSHG \n",
"499 2020-12-31 0.130 南微医学 688029.XSHG \n",
"\n",
" sector aggregate_sector name \n",
"0 机械设备I 运输设备II 铁路设备III 铁路、船舶、航空航天和其他运输设备制造业 城轨铁路 工业 工业 SZGT \n",
"1 电气设备I 电池II 电池化学品III 综合 工业集团企业 工业 工业 ZGBA \n",
"2 建筑材料I 玻璃制造II 玻璃制造III 非金属矿物制品业 玻璃 原材料 原料与能源 NBA \n",
"3 电子I 电子制造II 消费电子零部件及组装III 计算机、通信和其他电子设备制造业 安防设备... 信息与通信 SKJ \n",
"4 交通运输I 航运港口II 港口III 水上运输业 港口 工业 工业 ZSGK \n",
".. ... ... ... \n",
"495 国防军工I 军工电子II 军工电子III 计算机、通信和其他电子设备制造业 集成电路设计 信息技术 工业 RCWN \n",
"496 电子I 半导体II 数字芯片设计III 软件和信息技术服务业 集成电路设计 信息技术 信息与通信 JCGF \n",
"497 计算机I IT服务II IT服务III 软件和信息技术服务业 通用软件 信息技术 信息与通信 HRKJ \n",
"498 医药生物I 化学制药II 化学制剂III 医药制造业 药品制剂 医药卫生 医药卫生 WXSW \n",
"499 医药生物I 医疗器械II 医疗耗材III 专用设备制造业 医疗耗材 医药卫生 医药卫生 NWYX \n",
"\n",
"[500 rows x 7 columns]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## test create benchmark portfolio\n",
"b_profile,error = api.update_benchmark_profile(datetime(2021,1,5), datetime(2021,1,5), benchmark='000905.XSHG')\n",
"b_profile"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"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>date</th>\n",
" <th>weight</th>\n",
" <th>display_name</th>\n",
" <th>ticker</th>\n",
" <th>sector</th>\n",
" <th>aggregate_sector</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1500</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.088</td>\n",
" <td>神州高铁</td>\n",
" <td>000008.XSHE</td>\n",
" <td>机械设备I 运输设备II 铁路设备III 铁路、船舶、航空航天和其他运输设备制造业 城轨铁路 工业</td>\n",
" <td>工业</td>\n",
" <td>SZGT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1501</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.344</td>\n",
" <td>中国宝安</td>\n",
" <td>000009.XSHE</td>\n",
" <td>电气设备I 电池II 电池化学品III 综合 工业集团企业 工业</td>\n",
" <td>工业</td>\n",
" <td>ZGBA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1502</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.180</td>\n",
" <td>南玻A</td>\n",
" <td>000012.XSHE</td>\n",
" <td>建筑材料I 玻璃制造II 玻璃制造III 非金属矿物制品业 玻璃 原材料</td>\n",
" <td>原料与能源</td>\n",
" <td>NBA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1503</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.297</td>\n",
" <td>深科技</td>\n",
" <td>000021.XSHE</td>\n",
" <td>电子I 电子制造II 消费电子零部件及组装III 计算机、通信和其他电子设备制造业 安防设备...</td>\n",
" <td>信息与通信</td>\n",
" <td>SKJ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1504</th>\n",
" <td>2020-12-31</td>\n",
" <td>0.030</td>\n",
" <td>招商港口</td>\n",
" <td>001872.XSHE</td>\n",
" <td>交通运输I 航运港口II 港口III 水上运输业 港口 工业</td>\n",
" <td>工业</td>\n",
" <td>ZSGK</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>26995</th>\n",
" <td>2021-12-31</td>\n",
" <td>0.328</td>\n",
" <td>凯赛生物</td>\n",
" <td>688065.XSHG</td>\n",
" <td>化工I 化学制品II 其他化学制品III 化学纤维制造业 其他化学原料 原材料</td>\n",
" <td>原料与能源</td>\n",
" <td>KSSW</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26996</th>\n",
" <td>2021-12-31</td>\n",
" <td>0.118</td>\n",
" <td>财达证券</td>\n",
" <td>600906.XSHG</td>\n",
" <td>非银金融I 证券II 证券III 资本市场服务 证券公司 金融</td>\n",
" <td>金融与地产</td>\n",
" <td>CDZQ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26997</th>\n",
" <td>2021-12-31</td>\n",
" <td>0.101</td>\n",
" <td>圣湘生物</td>\n",
" <td>688289.XSHG</td>\n",
" <td>医药生物I 医疗器械II 体外诊断III 医药制造业 体外诊断 医药卫生</td>\n",
" <td>医药卫生</td>\n",
" <td>SXSW</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26998</th>\n",
" <td>2021-12-31</td>\n",
" <td>0.089</td>\n",
" <td>南网能源</td>\n",
" <td>003035.XSHE</td>\n",
" <td>公用事业I 电力II 电能综合服务III 科技推广和应用服务业 节能与资源回收 工业</td>\n",
" <td>公用事业</td>\n",
" <td>NWNY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26999</th>\n",
" <td>2021-12-31</td>\n",
" <td>0.350</td>\n",
" <td>思瑞浦</td>\n",
" <td>688536.XSHG</td>\n",
" <td>电子I 半导体II 模拟芯片设计III 软件和信息技术服务业 集成电路设计 信息技术</td>\n",
" <td>信息与通信</td>\n",
" <td>SRP</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>6500 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" date weight display_name ticker \\\n",
"1500 2020-12-31 0.088 神州高铁 000008.XSHE \n",
"1501 2020-12-31 0.344 中国宝安 000009.XSHE \n",
"1502 2020-12-31 0.180 南玻A 000012.XSHE \n",
"1503 2020-12-31 0.297 深科技 000021.XSHE \n",
"1504 2020-12-31 0.030 招商港口 001872.XSHE \n",
"... ... ... ... ... \n",
"26995 2021-12-31 0.328 凯赛生物 688065.XSHG \n",
"26996 2021-12-31 0.118 财达证券 600906.XSHG \n",
"26997 2021-12-31 0.101 圣湘生物 688289.XSHG \n",
"26998 2021-12-31 0.089 南网能源 003035.XSHE \n",
"26999 2021-12-31 0.350 思瑞浦 688536.XSHG \n",
"\n",
" sector aggregate_sector \\\n",
"1500 机械设备I 运输设备II 铁路设备III 铁路、船舶、航空航天和其他运输设备制造业 城轨铁路 工业 工业 \n",
"1501 电气设备I 电池II 电池化学品III 综合 工业集团企业 工业 工业 \n",
"1502 建筑材料I 玻璃制造II 玻璃制造III 非金属矿物制品业 玻璃 原材料 原料与能源 \n",
"1503 电子I 电子制造II 消费电子零部件及组装III 计算机、通信和其他电子设备制造业 安防设备... 信息与通信 \n",
"1504 交通运输I 航运港口II 港口III 水上运输业 港口 工业 工业 \n",
"... ... ... \n",
"26995 化工I 化学制品II 其他化学制品III 化学纤维制造业 其他化学原料 原材料 原料与能源 \n",
"26996 非银金融I 证券II 证券III 资本市场服务 证券公司 金融 金融与地产 \n",
"26997 医药生物I 医疗器械II 体外诊断III 医药制造业 体外诊断 医药卫生 医药卫生 \n",
"26998 公用事业I 电力II 电能综合服务III 科技推广和应用服务业 节能与资源回收 工业 公用事业 \n",
"26999 电子I 半导体II 模拟芯片设计III 软件和信息技术服务业 集成电路设计 信息技术 信息与通信 \n",
"\n",
" name \n",
"1500 SZGT \n",
"1501 ZGBA \n",
"1502 NBA \n",
"1503 SKJ \n",
"1504 ZSGK \n",
"... ... \n",
"26995 KSSW \n",
"26996 CDZQ \n",
"26997 SXSW \n",
"26998 NWNY \n",
"26999 SRP \n",
"\n",
"[6500 rows x 7 columns]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## test update benchmark profile\n",
"bp_updated, error = api.update_benchmark_profile(datetime(2021,1,5), datetime(2022,1,5), profile=b_profile)\n",
"bp_updated"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# save portfolio and benchmark profile\n",
"db_url = \"sqlite:///../local.db\"\n",
"with create_engine(db_url).connect() as conn:\n",
" p_profile.to_sql(\"portfolio_profile\", conn, if_exists=\"replace\")\n",
" # bp_updated.to_sql(\"benchmark_profile\", conn, if_exists=\"replace\")"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"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>date</th>\n",
" <th>ticker</th>\n",
" <th>open</th>\n",
" <th>close</th>\n",
" <th>high</th>\n",
" <th>low</th>\n",
" <th>volume</th>\n",
" <th>money</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2021-01-05</td>\n",
" <td>600409.XSHG</td>\n",
" <td>9.23</td>\n",
" <td>9.57</td>\n",
" <td>9.66</td>\n",
" <td>9.08</td>\n",
" <td>82669289.0</td>\n",
" <td>7.803391e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2021-01-06</td>\n",
" <td>600409.XSHG</td>\n",
" <td>9.40</td>\n",
" <td>9.73</td>\n",
" <td>9.78</td>\n",
" <td>9.34</td>\n",
" <td>76413825.0</td>\n",
" <td>7.351438e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2021-01-07</td>\n",
" <td>600409.XSHG</td>\n",
" <td>9.74</td>\n",
" <td>10.14</td>\n",
" <td>10.27</td>\n",
" <td>9.74</td>\n",
" <td>61932917.0</td>\n",
" <td>6.235711e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2021-01-08</td>\n",
" <td>600409.XSHG</td>\n",
" <td>10.15</td>\n",
" <td>10.13</td>\n",
" <td>10.30</td>\n",
" <td>9.70</td>\n",
" <td>49727039.0</td>\n",
" <td>4.964196e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2021-01-11</td>\n",
" <td>600409.XSHG</td>\n",
" <td>10.10</td>\n",
" <td>10.29</td>\n",
" <td>10.36</td>\n",
" <td>9.76</td>\n",
" <td>64022975.0</td>\n",
" <td>6.439525e+08</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",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1477</th>\n",
" <td>2022-01-04</td>\n",
" <td>600415.XSHG</td>\n",
" <td>4.80</td>\n",
" <td>4.89</td>\n",
" <td>4.90</td>\n",
" <td>4.78</td>\n",
" <td>58291943.0</td>\n",
" <td>2.832956e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1478</th>\n",
" <td>2022-01-05</td>\n",
" <td>600415.XSHG</td>\n",
" <td>4.95</td>\n",
" <td>4.80</td>\n",
" <td>4.95</td>\n",
" <td>4.78</td>\n",
" <td>43227038.0</td>\n",
" <td>2.095315e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1479</th>\n",
" <td>2022-01-06</td>\n",
" <td>600415.XSHG</td>\n",
" <td>4.81</td>\n",
" <td>4.73</td>\n",
" <td>4.82</td>\n",
" <td>4.71</td>\n",
" <td>30542883.0</td>\n",
" <td>1.450018e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1480</th>\n",
" <td>2022-01-07</td>\n",
" <td>600415.XSHG</td>\n",
" <td>4.74</td>\n",
" <td>4.70</td>\n",
" <td>4.79</td>\n",
" <td>4.68</td>\n",
" <td>24902567.0</td>\n",
" <td>1.178837e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1481</th>\n",
" <td>2022-01-10</td>\n",
" <td>600415.XSHG</td>\n",
" <td>4.70</td>\n",
" <td>4.75</td>\n",
" <td>4.85</td>\n",
" <td>4.67</td>\n",
" <td>39278041.0</td>\n",
" <td>1.859827e+08</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1482 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" date ticker open close high low volume \\\n",
"0 2021-01-05 600409.XSHG 9.23 9.57 9.66 9.08 82669289.0 \n",
"1 2021-01-06 600409.XSHG 9.40 9.73 9.78 9.34 76413825.0 \n",
"2 2021-01-07 600409.XSHG 9.74 10.14 10.27 9.74 61932917.0 \n",
"3 2021-01-08 600409.XSHG 10.15 10.13 10.30 9.70 49727039.0 \n",
"4 2021-01-11 600409.XSHG 10.10 10.29 10.36 9.76 64022975.0 \n",
"... ... ... ... ... ... ... ... \n",
"1477 2022-01-04 600415.XSHG 4.80 4.89 4.90 4.78 58291943.0 \n",
"1478 2022-01-05 600415.XSHG 4.95 4.80 4.95 4.78 43227038.0 \n",
"1479 2022-01-06 600415.XSHG 4.81 4.73 4.82 4.71 30542883.0 \n",
"1480 2022-01-07 600415.XSHG 4.74 4.70 4.79 4.68 24902567.0 \n",
"1481 2022-01-10 600415.XSHG 4.70 4.75 4.85 4.67 39278041.0 \n",
"\n",
" money \n",
"0 7.803391e+08 \n",
"1 7.351438e+08 \n",
"2 6.235711e+08 \n",
"3 4.964196e+08 \n",
"4 6.439525e+08 \n",
"... ... \n",
"1477 2.832956e+08 \n",
"1478 2.095315e+08 \n",
"1479 1.450018e+08 \n",
"1480 1.178837e+08 \n",
"1481 1.859827e+08 \n",
"\n",
"[1482 rows x 8 columns]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## test get portfolio stock\n",
"min_date = p_profile.date.min()\n",
"max_date = p_profile.date.max()\n",
"p_stocks, error = api.get_stocks_price(p_profile, min_date, max_date)\n",
"p_stocks"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Timestamp('2022-01-10 00:00:00')"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"max_date"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[48], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m## test get benchmark stock\u001b[39;00m\n\u001b[1;32m 2\u001b[0m min_date \u001b[39m=\u001b[39m bp_updated\u001b[39m.\u001b[39mdate\u001b[39m.\u001b[39mmin()\n\u001b[0;32m----> 3\u001b[0m b_stocks, error \u001b[39m=\u001b[39m api\u001b[39m.\u001b[39;49mget_stocks_price(bp_updated, min_date, max_date)\n\u001b[1;32m 4\u001b[0m b_stocks\n",
"File \u001b[0;32m~/Desktop/risk-monitor-dashboard/script/api.py:27\u001b[0m, in \u001b[0;36mauth_api.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[39mif\u001b[39;00m (\u001b[39mnot\u001b[39;00m jq\u001b[39m.\u001b[39mis_auth()):\n\u001b[1;32m 25\u001b[0m jq\u001b[39m.\u001b[39mauth(user_name, password)\n\u001b[0;32m---> 27\u001b[0m result \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 28\u001b[0m \u001b[39mreturn\u001b[39;00m result\n",
"File \u001b[0;32m~/Desktop/risk-monitor-dashboard/script/api.py:230\u001b[0m, in \u001b[0;36mget_stocks_price\u001b[0;34m(profile, start_date, end_date, frequency)\u001b[0m\n\u001b[1;32m 227\u001b[0m ticker \u001b[39m=\u001b[39m profile[\u001b[39m'\u001b[39m\u001b[39mticker\u001b[39m\u001b[39m'\u001b[39m]\u001b[39m.\u001b[39mto_list()\n\u001b[1;32m 228\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 230\u001b[0m data \u001b[39m=\u001b[39m jq\u001b[39m.\u001b[39;49mget_price(ticker, start_date\u001b[39m=\u001b[39;49mstart_str,\n\u001b[1;32m 231\u001b[0m end_date\u001b[39m=\u001b[39;49mend_str, frequency\u001b[39m=\u001b[39;49mfrequency)\n\u001b[1;32m 232\u001b[0m data\u001b[39m.\u001b[39mrename(columns\u001b[39m=\u001b[39m{\u001b[39m'\u001b[39m\u001b[39mtime\u001b[39m\u001b[39m'\u001b[39m: \u001b[39m'\u001b[39m\u001b[39mdate\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mcode\u001b[39m\u001b[39m'\u001b[39m: \u001b[39m\"\u001b[39m\u001b[39mticker\u001b[39m\u001b[39m\"\u001b[39m}, inplace\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m)\n\u001b[1;32m 233\u001b[0m \u001b[39mreturn\u001b[39;00m data, error_message\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/jqdatasdk/utils.py:308\u001b[0m, in \u001b[0;36massert_auth.<locals>._wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 306\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mException\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39mPlease run jqdatasdk.auth first\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 307\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 308\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/jqdatasdk/api.py:39\u001b[0m, in \u001b[0;36mget_price\u001b[0;34m(security, start_date, end_date, frequency, fields, skip_paused, fq, count, panel, fill_paused)\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[39mif\u001b[39;00m count \u001b[39mand\u001b[39;00m start_date:\n\u001b[1;32m 38\u001b[0m \u001b[39mraise\u001b[39;00m ParamsError(\u001b[39m\"\u001b[39m\u001b[39m(start_date, count) only one param is required\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[0;32m---> 39\u001b[0m \u001b[39mreturn\u001b[39;00m JQDataClient\u001b[39m.\u001b[39;49minstance()\u001b[39m.\u001b[39;49mget_price(\u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49m\u001b[39mlocals\u001b[39;49m())\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/jqdatasdk/client.py:347\u001b[0m, in \u001b[0;36mJQDataClient.__getattr__.<locals>.<lambda>\u001b[0;34m(**kwargs)\u001b[0m\n\u001b[1;32m 346\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__getattr__\u001b[39m(\u001b[39mself\u001b[39m, method):\n\u001b[0;32m--> 347\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mlambda\u001b[39;00m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs: \u001b[39mself\u001b[39;49m(method, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/jqdatasdk/client.py:331\u001b[0m, in \u001b[0;36mJQDataClient.__call__\u001b[0;34m(self, method, **kwargs)\u001b[0m\n\u001b[1;32m 329\u001b[0m \u001b[39mfor\u001b[39;00m _ \u001b[39min\u001b[39;00m \u001b[39mrange\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mrequest_attempt_count):\n\u001b[1;32m 330\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 331\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mquery(method, kwargs)\n\u001b[1;32m 332\u001b[0m \u001b[39mbreak\u001b[39;00m\n\u001b[1;32m 333\u001b[0m \u001b[39mexcept\u001b[39;00m socket_error \u001b[39mas\u001b[39;00m ex:\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/jqdatasdk/client.py:256\u001b[0m, in \u001b[0;36mJQDataClient.query\u001b[0;34m(self, method, params)\u001b[0m\n\u001b[1;32m 254\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 255\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mensure_auth()\n\u001b[0;32m--> 256\u001b[0m response \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mclient\u001b[39m.\u001b[39;49mquery(request)\n\u001b[1;32m 257\u001b[0m \u001b[39mif\u001b[39;00m response\u001b[39m.\u001b[39mstatus:\n\u001b[1;32m 258\u001b[0m msg \u001b[39m=\u001b[39m response\u001b[39m.\u001b[39mmsg\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/thrift.py:219\u001b[0m, in \u001b[0;36mTClient._req\u001b[0;34m(self, _api, *args, **kwargs)\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[39m# wait result only if non-oneway\u001b[39;00m\n\u001b[1;32m 218\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mgetattr\u001b[39m(result_cls, \u001b[39m\"\u001b[39m\u001b[39moneway\u001b[39m\u001b[39m\"\u001b[39m):\n\u001b[0;32m--> 219\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_recv(_api)\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/thrift.py:238\u001b[0m, in \u001b[0;36mTClient._recv\u001b[0;34m(self, _api)\u001b[0m\n\u001b[1;32m 236\u001b[0m \u001b[39mraise\u001b[39;00m x\n\u001b[1;32m 237\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mgetattr\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_service, _api \u001b[39m+\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m_result\u001b[39m\u001b[39m\"\u001b[39m)()\n\u001b[0;32m--> 238\u001b[0m result\u001b[39m.\u001b[39;49mread(\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_iprot)\n\u001b[1;32m 239\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_iprot\u001b[39m.\u001b[39mread_message_end()\n\u001b[1;32m 241\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mhasattr\u001b[39m(result, \u001b[39m\"\u001b[39m\u001b[39msuccess\u001b[39m\u001b[39m\"\u001b[39m) \u001b[39mand\u001b[39;00m result\u001b[39m.\u001b[39msuccess \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/thrift.py:160\u001b[0m, in \u001b[0;36mTPayload.read\u001b[0;34m(self, iprot)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mread\u001b[39m(\u001b[39mself\u001b[39m, iprot):\n\u001b[0;32m--> 160\u001b[0m iprot\u001b[39m.\u001b[39mread_struct(\u001b[39mself\u001b[39m)\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/protocol/cybin/cybin.pyx:501\u001b[0m, in \u001b[0;36mcybin.TCyBinaryProtocol.read_struct\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/protocol/cybin/cybin.pyx:202\u001b[0m, in \u001b[0;36mcybin.read_struct\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/protocol/cybin/cybin.pyx:354\u001b[0m, in \u001b[0;36mcybin.c_read_val\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/protocol/cybin/cybin.pyx:202\u001b[0m, in \u001b[0;36mcybin.read_struct\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/protocol/cybin/cybin.pyx:294\u001b[0m, in \u001b[0;36mcybin.c_read_val\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/protocol/cybin/cybin.pyx:255\u001b[0m, in \u001b[0;36mcybin.c_read_string\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/protocol/cybin/cybin.pyx:244\u001b[0m, in \u001b[0;36mcybin.c_read_binary\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/transport/buffered/cybuffered.pyx:65\u001b[0m, in \u001b[0;36mthriftpy2.transport.buffered.cybuffered.TCyBufferedTransport.c_read\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/transport/buffered/cybuffered.pyx:69\u001b[0m, in \u001b[0;36mthriftpy2.transport.buffered.cybuffered.TCyBufferedTransport.read_trans\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/transport/cybase.pyx:65\u001b[0m, in \u001b[0;36mthriftpy2.transport.cybase.TCyBuffer.read_trans\u001b[0;34m()\u001b[0m\n",
"File \u001b[0;32m/opt/homebrew/Caskroom/miniforge/base/envs/portfolio_risk_assesment/lib/python3.11/site-packages/thriftpy2/transport/socket.py:112\u001b[0m, in \u001b[0;36mTSocket.read\u001b[0;34m(self, sz)\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[39mwhile\u001b[39;00m \u001b[39mTrue\u001b[39;00m:\n\u001b[1;32m 111\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m--> 112\u001b[0m buff \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msock\u001b[39m.\u001b[39;49mrecv(sz)\n\u001b[1;32m 113\u001b[0m \u001b[39mexcept\u001b[39;00m socket\u001b[39m.\u001b[39merror \u001b[39mas\u001b[39;00m e:\n\u001b[1;32m 114\u001b[0m \u001b[39mif\u001b[39;00m e\u001b[39m.\u001b[39merrno \u001b[39m==\u001b[39m errno\u001b[39m.\u001b[39mEINTR:\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"## test get benchmark stock\n",
"min_date = bp_updated.date.min()\n",
"b_stocks, error = api.get_stocks_price(bp_updated, min_date, max_date)\n",
"b_stocks"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# save profile to db\n",
"\n",
"## save result \n",
"b_stocks.to_pickle('../data/b_stocks.pkl')\n",
"p_stocks.to_pickle('../data/p_stocks.pkl')\n",
"p_profile.to_pickle('../data/p_profile.pkl')\n",
"bp_updated.to_pickle('../data/b_profile.pkl')"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Testing processing\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import processing"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"calculated_p_stock = processing.get_processing_result_of_stocks_df(p_stocks, p_profile)\n",
"calculated_b_stock = processing.get_processing_result_of_stocks_df(b_stocks, bp_updated)\n",
"p_eval_df = processing.get_portfolio_evaluation(calculated_p_stock, calculated_b_stock, p_profile)\n",
"sector_eval_df = processing.get_portfolio_sector_evaluation(calculated_p_stock, calculated_b_stock) \n",
"# merged_df = processing.merge_on_date(calculated_p_stock, calculated_b_stock)\n",
"# bnb_sector_result = processing.get_bhb_result(sector_eval_df)\n",
"# bnb_stock_result = processing.get_bhb_result(merged_df)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"## save reuslt\n",
"calculated_p_stock.to_pickle('../data/calculated_p_stock.pkl')\n",
"calculated_b_stock.to_pickle('../data/calculated_b_stock.pkl')\n",
"p_eval_df.to_pickle('../data/p_eval_df.pkl')\n",
"sector_eval_df.to_pickle('../data/sector_eval_df.pkl')\n",
"merged_df.to_pickle('../data/merged_df.pkl')\n",
"bnb_sector_result.to_pickle('../data/bnb_sector_result.pkl')\n",
"bnb_stock_result.to_pickle('../data/bnb_stock_result.pkl')\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Analysis"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"<div id='p1002'>\n",
" <div id=\"e43d02e3-27d9-4306-9d4f-b06d41955a6d\" data-root-id=\"p1002\" style=\"display: contents;\"></div>\n",
"</div>\n",
"<script type=\"application/javascript\">(function(root) {\n",
" var docs_json = {\"df2b5290-6f43-4d0d-9d1d-b103843a7509\":{\"version\":\"3.1.1\",\"title\":\"Bokeh Application\",\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}],\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p1002\",\"attributes\":{\"name\":\"Row00929\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1005\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1191\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1003\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1004\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/bundled/theme/native.css\"}}],\"min_width\":700,\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1006\",\"attributes\":{\"name\":\"HSpacer00940\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1005\"},{\"id\":\"p1003\"},{\"id\":\"p1004\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1011\",\"attributes\":{\"width\":700,\"height\":300,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1007\",\"attributes\":{\"tags\":[[[\"date\",\"date\",null]]],\"start\":1609804800000.0,\"end\":1641772800000.0,\"reset_start\":1609804800000.0,\"reset_end\":1641772800000.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1008\",\"attributes\":{\"tags\":[[[\"value\",\"value\",null]]],\"start\":-0.18829885945418015,\"end\":0.4712057538085001,\"reset_start\":-0.18829885945418015,\"reset_end\":0.4712057538085001}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1023\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1025\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1014\",\"attributes\":{\"text\":\"Portfolio Return\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1122\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1112\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1114\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1113\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAfv1sd0IAAMDjT213QgAAgEmibXdCAABAr/Rtd0IAAIDg6253QgAAQEY+b3dCAAAArJBvd0IAAMAR4293QgAAgHc1cHdCAADAqCxxd0IAAIAOf3F3QgAAQHTRcXdCAAAA2iNyd0IAAMA/dnJ3QgAAAHFtc3dCAADA1r9zd0IAAIA8EnR3QgAAQKJkdHdCAAAACLd0d0IAAEA5rnV3QgAAAJ8AdndCAADABFN2d0IAAIBqpXZ3QgAAQND3dndCAACAAe93d0IAAEBnQXh3QgAAAM2TeHdCAAAA+yZ7d0IAAMBgeXt3QgAAAJJwfHdCAADA98J8d0IAAIBdFX13QgAAQMNnfXdCAAAAKbp9d0IAAEBasX53QgAAAMADf3dCAADAJVZ/d0IAAICLqH93QgAAQPH6f3dCAACAIvKAd0IAAECIRIF3QgAAAO6WgXdCAADAU+mBd0IAAIC5O4J3QgAAwOoyg3dCAACAUIWDd0IAAEC214N3QgAAABwqhHdCAADAgXyEd0IAAACzc4V3QgAAwBjGhXdCAACAfhiGd0IAAEDkaoZ3QgAAAEq9hndCAABAe7SHd0IAAADhBoh3QgAAwEZZiHdCAACArKuId0IAAEAS/oh3QgAAQKlHindCAAAAD5qKd0IAAMB07Ip3QgAAgNo+i3dCAADACzaMd0IAAIBxiIx3QgAAQNfajHdCAAAAPS2Nd0IAAMCif413QgAAANR2jndCAADAOcmOd0IAAICfG493QgAAQAVuj3dCAAAAa8CPd0IAAECct5B3QgAAAAIKkXdCAADAZ1yRd0IAAIDNrpF3QgAAQDMBkndCAADAle+Td0IAAID7QZR3QgAAwCw5lXdCAACAkouVd0IAAED43ZV3QgAAAF4wlndCAADAw4KWd0IAAAD1eZd3QgAAwFrMl3dCAACAwB6Yd0IAAEAmcZh3QgAAAIzDmHdCAABAvbqZd0IAAAAjDZp3QgAAwIhfmndCAACA7rGad0IAAEBUBJt3QgAAgIX7m3dCAABA602cd0IAAABRoJx3QgAAwLbynHdCAACAHEWdd0IAAMBNPJ53QgAAgLOOnndCAABAGeGed0IAAAB/M593QgAAwOSFn3dCAADAe8+gd0IAAIDhIaF3QgAAQEd0oXdCAAAArcahd0IAAEDevaJ3QgAAAEQQo3dCAADAqWKjd0IAAIAPtaN3QgAAQHUHpHdCAACApv6kd0IAAEAMUaV3QgAAAHKjpXdCAADA1/Wld0IAAIA9SKZ3QgAAwG4/p3dCAACA1JGnd0IAAEA65Kd3QgAAAKA2qHdCAADABYmod0IAAAA3gKl3QgAAwJzSqXdCAACAAiWqd0IAAEBod6p3QgAAAM7JqndCAABA/8Crd0IAAABlE6x3QgAAwMplrHdCAACAMLisd0IAAECWCq13QgAAgMcBrndCAABALVSud0IAAACTpq53QgAAwPj4rndCAACAXkuvd0IAAMCPQrB3QgAAgPWUsHdCAABAW+ewd0IAAADBObF3QgAAwCaMsXdCAAAAWIOyd0IAAMC91bJ3QgAAgCMos3dCAABAiXqzd0IAAADvzLN3QgAAQCDEtHdCAAAAhha1d0IAAMDraLV3QgAAgFG7tXdCAABAtw22d0IAAIDoBLd3QgAAQE5Xt3dCAAAAtKm3d0IAAMAZ/Ld3QgAAgH9OuHdCAADAsEW5d0IAAIAWmLl3QgAAQHzquXdCAAAA4jy6d0IAAMBHj7p3QgAAAHmGu3dCAADA3ti7d0IAAIBEK7x3QgAAQKp9vHdCAAAAENC8d0IAAEBBx713QgAAAKcZvndCAADADGy+d0IAAIByvr53QgAAQNgQv3dCAAAA1azAd0IAAMA6/8B3QgAAgKBRwXdCAADA0UjCd0IAAIA3m8J3QgAAQJ3twndCAAAAA0DDd0IAAAAx08V3QgAAQGLKxndCAAAAyBzHd0IAAMAtb8d3QgAAgJPBx3dCAABA+RPId0IAAIAqC8l3QgAAQJBdyXdCAAAA9q/Jd0IAAMBbAsp3QgAAgMFUyndCAADA8kvLd0IAAIBYnst3QgAAQL7wy3dCAAAAJEPMd0IAAMCJlcx3QgAAALuMzXdCAADAIN/Nd0IAAICGMc53QgAAQOyDzndCAAAAUtbOd0IAAECDzc93QgAAAOkf0HdCAADATnLQd0IAAIC0xNB3QgAAQBoX0XdCAACASw7Sd0IAAECxYNJ3QgAAABez0ndCAADAfAXTd0IAAIDiV9N3QgAAwBNP1HdCAACAeaHUd0IAAEDf89R3QgAAAEVG1XdCAADAqpjVd0IAAADcj9Z3QgAAwEHi1ndCAACApzTXd0IAAEANh9d3QgAAAHPZ13dCAABApNDYd0IAAAAKI9l3QgAAwG912XdCAACA1cfZd0IAAEA7Gtp3QgAAgGwR23dCAABA0mPbd0IAAAA4ttt3QgAAwJ0I3HdCAACAA1vcd0IAAMA0Ut13QgAAgJqk3XdCAABAAPfdd0IAAABmSd53QgAAwMub3ndCAAAA/ZLfd0IAAMBi5d93QgAAgMg34HdCAABALorgd0IAAACU3OB3QgAAACsm4ndCAADAkHjid0IAAID2yuJ3QgAAQFwd43dCAACAjRTkd0I=\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\",\"portfolio_return_p\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1123\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1124\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1119\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1127\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1120\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1121\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1138\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1128\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1130\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1129\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAfv1sd0IAAMDjT213QgAAgEmibXdCAABAr/Rtd0IAAIDg6253QgAAQEY+b3dCAAAArJBvd0IAAMAR4293QgAAgHc1cHdCAADAqCxxd0IAAIAOf3F3QgAAQHTRcXdCAAAA2iNyd0IAAMA/dnJ3QgAAAHFtc3dCAADA1r9zd0IAAIA8EnR3QgAAQKJkdHdCAAAACLd0d0IAAEA5rnV3QgAAAJ8AdndCAADABFN2d0IAAIBqpXZ3QgAAQND3dndCAACAAe93d0IAAEBnQXh3QgAAAM2TeHdCAAAA+yZ7d0IAAMBgeXt3QgAAAJJwfHdCAADA98J8d0IAAIBdFX13QgAAQMNnfXdCAAAAKbp9d0IAAEBasX53QgAAAMADf3dCAADAJVZ/d0IAAICLqH93QgAAQPH6f3dCAACAIvKAd0IAAECIRIF3QgAAAO6WgXdCAADAU+mBd0IAAIC5O4J3QgAAwOoyg3dCAACAUIWDd0IAAEC214N3QgAAABwqhHdCAADAgXyEd0IAAACzc4V3QgAAwBjGhXdCAACAfhiGd0IAAEDkaoZ3QgAAAEq9hndCAABAe7SHd0IAAADhBoh3QgAAwEZZiHdCAACArKuId0IAAEAS/oh3QgAAQKlHindCAAAAD5qKd0IAAMB07Ip3QgAAgNo+i3dCAADACzaMd0IAAIBxiIx3QgAAQNfajHdCAAAAPS2Nd0IAAMCif413QgAAANR2jndCAADAOcmOd0IAAICfG493QgAAQAVuj3dCAAAAa8CPd0IAAECct5B3QgAAAAIKkXdCAADAZ1yRd0IAAIDNrpF3QgAAQDMBkndCAADAle+Td0IAAID7QZR3QgAAwCw5lXdCAACAkouVd0IAAED43ZV3QgAAAF4wlndCAADAw4KWd0IAAAD1eZd3QgAAwFrMl3dCAACAwB6Yd0IAAEAmcZh3QgAAAIzDmHdCAABAvbqZd0IAAAAjDZp3QgAAwIhfmndCAACA7rGad0IAAEBUBJt3QgAAgIX7m3dCAABA602cd0IAAABRoJx3QgAAwLbynHdCAACAHEWdd0IAAMBNPJ53QgAAgLOOnndCAABAGeGed0IAAAB/M593QgAAwOSFn3dCAADAe8+gd0IAAIDhIaF3QgAAQEd0oXdCAAAArcahd0IAAEDevaJ3QgAAAEQQo3dCAADAqWKjd0IAAIAPtaN3QgAAQHUHpHdCAACApv6kd0IAAEAMUaV3QgAAAHKjpXdCAADA1/Wld0IAAIA9SKZ3QgAAwG4/p3dCAACA1JGnd0IAAEA65Kd3QgAAAKA2qHdCAADABYmod0IAAAA3gKl3QgAAwJzSqXdCAACAAiWqd0IAAEBod6p3QgAAAM7JqndCAABA/8Crd0IAAABlE6x3QgAAwMplrHdCAACAMLisd0IAAECWCq13QgAAgMcBrndCAABALVSud0IAAACTpq53QgAAwPj4rndCAACAXkuvd0IAAMCPQrB3QgAAgPWUsHdCAABAW+ewd0IAAADBObF3QgAAwCaMsXdCAAAAWIOyd0IAAMC91bJ3QgAAgCMos3dCAABAiXqzd0IAAADvzLN3QgAAQCDEtHdCAAAAhha1d0IAAMDraLV3QgAAgFG7tXdCAABAtw22d0IAAIDoBLd3QgAAQE5Xt3dCAAAAtKm3d0IAAMAZ/Ld3QgAAgH9OuHdCAADAsEW5d0IAAIAWmLl3QgAAQHzquXdCAAAA4jy6d0IAAMBHj7p3QgAAAHmGu3dCAADA3ti7d0IAAIBEK7x3QgAAQKp9vHdCAAAAENC8d0IAAEBBx713QgAAAKcZvndCAADADGy+d0IAAIByvr53QgAAQNgQv3dCAAAA1azAd0IAAMA6/8B3QgAAgKBRwXdCAADA0UjCd0IAAIA3m8J3QgAAQJ3twndCAAAAA0DDd0IAAAAx08V3QgAAQGLKxndCAAAAyBzHd0IAAMAtb8d3QgAAgJPBx3dCAABA+RPId0IAAIAqC8l3QgAAQJBdyXdCAAAA9q/Jd0IAAMBbAsp3QgAAgMFUyndCAADA8kvLd0IAAIBYnst3QgAAQL7wy3dCAAAAJEPMd0IAAMCJlcx3QgAAALuMzXdCAADAIN/Nd0IAAICGMc53QgAAQOyDzndCAAAAUtbOd0IAAECDzc93QgAAAOkf0HdCAADATnLQd0IAAIC0xNB3QgAAQBoX0XdCAACASw7Sd0IAAECxYNJ3QgAAABez0ndCAADAfAXTd0IAAIDiV9N3QgAAwBNP1HdCAACAeaHUd0IAAEDf89R3QgAAAEVG1XdCAADAqpjVd0IAAADcj9Z3QgAAwEHi1ndCAACApzTXd0IAAEANh9d3QgAAAHPZ13dCAABApNDYd0IAAAAKI9l3QgAAwG912XdCAACA1cfZd0IAAEA7Gtp3QgAAgGwR23dCAABA0mPbd0IAAAA4ttt3QgAAwJ0I3HdCAACAA1vcd0IAAMA0Ut13QgAAgJqk3XdCAABAAPfdd0IAAABmSd53QgAAwMub3ndCAAAA/ZLfd0IAAMBi5d93QgAAgMg34HdCAABALorgd0IAAACU3OB3QgAAACsm4ndCAADAkHjid0IAAID2yuJ3QgAAQFwd43dCAACAjRTkd0I=\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\",\"portfolio_return_b\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1139\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1140\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1135\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1142\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1136\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1137\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1016\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1009\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"p1122\"},{\"id\":\"p1138\"}],\"tooltips\":[[\"Variable\",\"@{Variable}\"],[\"date\",\"@{date}{%F %T}\"],[\"value\",\"@{value}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@{date}\",\"datetime\"]]}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1077\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1078\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1079\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1080\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1081\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1082\"}],\"active_drag\":{\"id\":\"p1078\"},\"active_scroll\":{\"id\":\"p1079\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1070\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1072\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"PrintfTickFormatter\",\"id\":\"p1091\",\"attributes\":{\"format\":\"%.2f\"}},\"axis_label\":\"\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1073\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1125\",\"attributes\":{\"location\":[0,0],\"title\":\"Variable\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1126\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"portfolio_return_p\"},\"renderers\":[{\"id\":\"p1122\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1141\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"portfolio_return_b\"},\"renderers\":[{\"id\":\"p1138\"}]}}]}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p1027\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"DatetimeTicker\",\"id\":\"p1029\",\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1030\",\"attributes\":{\"num_minor_ticks\":0,\"mantissas\":[1,2,5],\"max_interval\":500.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1031\",\"attributes\":{\"num_minor_ticks\":0,\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"min_interval\":1000.0,\"max_interval\":1800000.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1032\",\"attributes\":{\"num_minor_ticks\":0,\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"min_interval\":3600000.0,\"max_interval\":43200000.0}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1033\",\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1034\",\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1035\",\"attributes\":{\"days\":[1,8,15,22]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1036\",\"attributes\":{\"days\":[1,15]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1037\",\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1038\",\"attributes\":{\"months\":[0,2,4,6,8,10]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1039\",\"attributes\":{\"months\":[0,4,8]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1040\",\"attributes\":{\"months\":[0,6]}},{\"type\":\"object\",\"name\":\"YearsTicker\",\"id\":\"p1041\"}]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p1028\"},\"axis_label\":\"date\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1042\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1069\",\"attributes\":{\"axis\":{\"id\":\"p1027\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1076\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1070\"},\"grid_line_color\":null}}],\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\"}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1189\",\"attributes\":{\"name\":\"HSpacer00943\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1005\"},{\"id\":\"p1003\"},{\"id\":\"p1004\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"callbacks\":{\"type\":\"map\"}}};\n",
" var render_items = [{\"docid\":\"df2b5290-6f43-4d0d-9d1d-b103843a7509\",\"roots\":{\"p1002\":\"e43d02e3-27d9-4306-9d4f-b06d41955a6d\"},\"root_ids\":[\"p1002\"]}];\n",
" var docs = Object.values(docs_json)\n",
" if (!docs) {\n",
" return\n",
" }\n",
" const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
" const is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1\n",
" function embed_document(root) {\n",
" var Bokeh = get_bokeh(root)\n",
" Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
" for (const render_item of render_items) {\n",
" for (const root_id of render_item.root_ids) {\n",
"\tconst id_el = document.getElementById(root_id)\n",
"\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",
"\t const root_el = id_el.children[0]\n",
"\t root_el.id = root_el.id + '-rendered'\n",
"\t}\n",
" }\n",
" }\n",
" }\n",
" function get_bokeh(root) {\n",
" if (root.Bokeh === undefined) {\n",
" return null\n",
" } else if (root.Bokeh.version !== py_version && !is_dev) {\n",
" if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
"\treturn null\n",
" }\n",
" return root.Bokeh.versions.get(py_version);\n",
" } else if (root.Bokeh.version === py_version) {\n",
" return root.Bokeh\n",
" }\n",
" return null\n",
" }\n",
" function is_loaded(root) {\n",
" var Bokeh = get_bokeh(root)\n",
" return (Bokeh != null && Bokeh.Panel !== undefined)\n",
" }\n",
" if (is_loaded(root)) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (is_loaded(root)) {\n",
" clearInterval(timer);\n",
" embed_document(root);\n",
" } else if (document.readyState == \"complete\") {\n",
" attempts++;\n",
" if (attempts > 200) {\n",
" clearInterval(timer);\n",
"\t var Bokeh = get_bokeh(root)\n",
"\t if (Bokeh == null || Bokeh.Panel == null) {\n",
" console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
"\t } else {\n",
"\t console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
"\t embed_document(root)\n",
"\t }\n",
" }\n",
" }\n",
" }, 25, root)\n",
" }\n",
"})(window);</script>"
],
"text/plain": [
":NdOverlay [Variable]\n",
" :Curve [date] (value)"
]
},
"execution_count": 35,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "p1002"
}
},
"output_type": "execute_result"
}
],
"source": [
"p_eval_df.hvplot.line(x='date', y=['portfolio_return_p', 'portfolio_return_b'], title='Portfolio Return').opts(yformatter='%.2f')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/var/folders/v5/2108rh5964q9j741wg_s8r1w0000gn/T/ipykernel_1926/4163140187.py:4: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" selected_df['contribution'] = selected_df['portfolio_return'] / selected_df.groupby('date')['portfolio_return'].transform('sum')\n"
]
},
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"<div id='p8955'>\n",
" <div id=\"d175c0c7-8290-496b-a047-65eb1d8d097e\" data-root-id=\"p8955\" style=\"display: contents;\"></div>\n",
"</div>\n",
"<script type=\"application/javascript\">(function(root) {\n",
" var docs_json = {\"49a0e724-c5c6-412e-bda9-f44e89df8d09\":{\"version\":\"3.1.1\",\"title\":\"Bokeh Application\",\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}],\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p8955\",\"attributes\":{\"name\":\"Row11521\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p8958\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p9226\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p8956\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p8957\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/bundled/theme/native.css\"}}],\"min_width\":700,\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p8959\",\"attributes\":{\"name\":\"HSpacer11532\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p8958\"},{\"id\":\"p8956\"},{\"id\":\"p8957\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p8968\",\"attributes\":{\"width\":700,\"height\":300,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p8960\",\"attributes\":{\"tags\":[[[\"date\",\"date\",null]]],\"start\":1614902400000.0,\"end\":1619740800000.0,\"reset_start\":1614902400000.0,\"reset_end\":1619740800000.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p8961\",\"attributes\":{\"tags\":[[[\"portfolio_return\",\"portfolio_return\",null]]],\"start\":-0.07127955317946863,\"end\":0.05205304237197215,\"reset_start\":-0.07127955317946863,\"reset_end\":0.05205304237197215}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p8980\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p8982\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p8971\",\"attributes\":{\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p9076\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p9066\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p9068\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p9067\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AABA8fp/d0IAAIAi8oB3QgAAQIhEgXdCAAAA7paBd0IAAMBT6YF3QgAAgLk7gndCAADA6jKDd0IAAIBQhYN3QgAAQLbXg3dCAAAAHCqEd0IAAMCBfIR3QgAAALNzhXdCAADAGMaFd0IAAIB+GIZ3QgAAQORqhndCAAAASr2Gd0IAAEB7tId3QgAAAOEGiHdCAADARlmId0IAAICsq4h3QgAAQBL+iHdCAABAqUeKd0IAAAAPmop3QgAAwHTsindCAACA2j6Ld0IAAMALNox3QgAAgHGIjHdCAABA19qMd0IAAAA9LY13QgAAwKJ/jXdCAAAA1HaOd0IAAMA5yY53QgAAgJ8bj3dCAABABW6Pd0IAAABrwI93QgAAQJy3kHdCAAAAAgqRd0IAAMBnXJF3QgAAgM2ukXdCAABAMwGSd0I=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"portfolio_return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"gIB7P3WZkD+A3qHvSd6APwAgBJYsKlO/AJBMk1Z4J7+AfMdLJuiAPwDRE5XKJ4s/wCXGWHBclj/ANiD6YLeSP0C34HPi6pI/oHQt+MFDoT/AFKExnHOWPwCHG6gO8ps/QI8eIO4ulj8AoIyjH04Rv4AIRe8Qt3+/gN8dGz1/d78A8o1KCAxRvwDYyGFqtVU/AOBu77UGK78AdniBhjZhPwCAH0PqbwM/AEVx/4rsYb8AIv8hNQt3PwD1HAxymXg/AIhnLuGJWD8AwNQm+P1ovwD7Z91BUHm/ADEhczyCeT8AaLXMVENZPwBa1mvw82s/AOGJbn/bgT8AqfNgakl5PwBtuOd09nE/AJht7nI1Sj8AZqLbX+NtPwDFzolelXw/AJ8h807RcT8A38zAoi6DP4A9gnh6LpA/gOecBviGgz8=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"display_name\",[\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\",\"\\u4e09\\u53cb\\u5316\\u5de5\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p9077\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p9078\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9073\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9081\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9074\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9075\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p9092\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p9082\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p9084\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p9083\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AABA8fp/d0IAAIAi8oB3QgAAQIhEgXdCAAAA7paBd0IAAMBT6YF3QgAAgLk7gndCAADA6jKDd0IAAIBQhYN3QgAAQLbXg3dCAAAAHCqEd0IAAMCBfIR3QgAAALNzhXdCAADAGMaFd0IAAIB+GIZ3QgAAQORqhndCAAAASr2Gd0IAAEB7tId3QgAAAOEGiHdCAADARlmId0IAAICsq4h3QgAAQBL+iHdCAABAqUeKd0IAAAAPmop3QgAAwHTsindCAACA2j6Ld0IAAMALNox3QgAAgHGIjHdCAABA19qMd0IAAAA9LY13QgAAwKJ/jXdCAAAA1HaOd0IAAMA5yY53QgAAgJ8bj3dCAABABW6Pd0IAAABrwI93QgAAQJy3kHdCAAAAAgqRd0IAAMBnXJF3QgAAgM2ukXdCAABAMwGSd0I=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"portfolio_return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AHviLqQpob8QNItZQSGjv9B5h2PbraW/EI+Odoj1ob/gm+T4rsShv9DnX1dpYqC/kPlgPGGWpL9QAHkPhASlv6DUgcjZ8py/YP9T7yCUnL8Q16znFRylv2CviJ2yu6S/QJNHA0waq79gPdL8oTuvvzBx20s6lam/IJB7Yyi9pb+wICCKL9Omv1A5zOPv+qW/ALGMjBRupr9w43sx39ijv8AwwKcRRqO/YKa80kTTob9QJfe+EGmhv+BgeN1Ls6G/8IDcAJysob8wueaEQ9Clv1CWxgzvRKW/UNjKcD2Mob9QEiR89hWgv0AbGWSZVqG/gGye4YY3lb9gNHYDlsKQvwCAey/ImI+/gCeBlCCPiL/AliNBNL+Bv0BGl1PN8YO/gDo+4Pblfb8AiAUi8NBnvwD+AcBzIWq/AKc7w39TcT8=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"display_name\",[\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\",\"\\u5929\\u8d50\\u6750\\u6599\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p9093\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p9094\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9089\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9096\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9090\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9091\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p9107\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p9097\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p9099\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p9098\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AABA8fp/d0IAAIAi8oB3QgAAQIhEgXdCAAAA7paBd0IAAMBT6YF3QgAAgLk7gndCAADA6jKDd0IAAIBQhYN3QgAAQLbXg3dCAAAAHCqEd0IAAMCBfIR3QgAAALNzhXdCAADAGMaFd0IAAIB+GIZ3QgAAQORqhndCAAAASr2Gd0IAAEB7tId3QgAAAOEGiHdCAADARlmId0IAAICsq4h3QgAAQBL+iHdCAABAqUeKd0IAAAAPmop3QgAAwHTsindCAACA2j6Ld0IAAMALNox3QgAAgHGIjHdCAABA19qMd0IAAAA9LY13QgAAwKJ/jXdCAAAA1HaOd0IAAMA5yY53QgAAgJ8bj3dCAABABW6Pd0IAAABrwI93QgAAQJy3kHdCAAAAAgqRd0IAAMBnXJF3QgAAgM2ukXdCAABAMwGSd0I=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"portfolio_return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"4EX2OUXkl79giSC0k8mYv2B29A4T5pu/AHf3oN+KnL9AEseVfeibvwD/HVbzJJ2/YDQQGddRm79g3fFdMAGbv+A++oHFmpa/gOp1Z6Wrmb/gQse6O4+Xv8AFQvounJa/4M3YGaNjmb8gF1lQKxKZv6Cproe2Zpm/oKmuh7Zmmb8gDH4tN1Gbv0DjmWIwo5u/wPd+WLnym78gdC/xtIGdvwAV7xwxmJy/IF0dtkvlnL/giwmvUmObvwDednOr65y/oC7nw/CdnL/AufKQkGKbv8CVLl8z2J+/gDPSnQUTnL8AevQ8MK6cvyBPBvCTxZu/wNLtpeYTnL/g2LDu4/Scv6Bt6siViJ2/gOPMoyRnnr8AmSLIzLCev+BVCCqEaJ6/0BirDeYwoL/g7BibZ4yfv6CUpwP2pp2/4L3p8CJHn78=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"display_name\",[\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\",\"\\u5c0f\\u5546\\u54c1\\u57ce\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p9108\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p9109\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9104\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#e5ae38\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9111\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#e5ae38\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9105\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#e5ae38\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9106\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#e5ae38\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p9122\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p9112\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p9114\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p9113\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AABA8fp/d0IAAIAi8oB3QgAAQIhEgXdCAAAA7paBd0IAAMBT6YF3QgAAgLk7gndCAADA6jKDd0IAAIBQhYN3QgAAQLbXg3dCAAAAHCqEd0IAAMCBfIR3QgAAALNzhXdCAADAGMaFd0IAAIB+GIZ3QgAAQORqhndCAAAASr2Gd0IAAEB7tId3QgAAAOEGiHdCAADARlmId0IAAICsq4h3QgAAQBL+iHdCAABAqUeKd0IAAAAPmop3QgAAwHTsindCAACA2j6Ld0IAAMALNox3QgAAgHGIjHdCAABA19qMd0IAAAA9LY13QgAAwKJ/jXdCAAAA1HaOd0IAAMA5yY53QgAAgJ8bj3dCAABABW6Pd0IAAABrwI93QgAAQJy3kHdCAAAAAgqRd0IAAMBnXJF3QgAAgM2ukXdCAABAMwGSd0I=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"portfolio_return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAyWcC4RYj8Ac6AtmKJ9v0B8FKWy2Iy/AJMiETb0hr/AGPa5OyGAv8A7MTOwTIC/wHBXIjQnjr/A95vwwJaKvwDOizNDh36/wIi1mTzygb/AEngjekGHv4C06iURHnG/ABemUm2Fgb8ASv8lRciFv4B3B2bLaYa/gEZBPQEbe7+AphoGtdd6vwBu3z//MGe/AEAbbblNRz8AaQYT5f18PwD2MzNfn4w/AL3264R2kj8A8jdzi7R4PwDPr1QNWoo/ABJhNES5fz8AiiSecaJbvwBjOCr3jHI/gFiRoHFZjD+Az6ExetCQPwBU/bjSZI4/gG9BEMUYnD8AVLmwc6OcP8Bi0Yf3rZw/wJsV2y3Uoj8gtIQJJ96hP4Cx8jx0C58/YPZKY+WKoT9ApTln7AulP+BujVaTY6U/wJSW1dfPpD8=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"display_name\",[\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\",\"\\u5fb7\\u8d5b\\u897f\\u5a01\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p9123\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p9124\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9119\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#6d904f\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9126\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#6d904f\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9120\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#6d904f\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9121\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#6d904f\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p9137\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p9127\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p9129\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p9128\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AABA8fp/d0IAAIAi8oB3QgAAQIhEgXdCAAAA7paBd0IAAMBT6YF3QgAAgLk7gndCAADA6jKDd0IAAIBQhYN3QgAAQLbXg3dCAAAAHCqEd0IAAMCBfIR3QgAAALNzhXdCAADAGMaFd0IAAIB+GIZ3QgAAQORqhndCAAAASr2Gd0IAAEB7tId3QgAAAOEGiHdCAADARlmId0IAAICsq4h3QgAAQBL+iHdCAABAqUeKd0IAAAAPmop3QgAAwHTsindCAACA2j6Ld0IAAMALNox3QgAAgHGIjHdCAABA19qMd0IAAAA9LY13QgAAwKJ/jXdCAAAA1HaOd0IAAMA5yY53QgAAgJ8bj3dCAABABW6Pd0IAAABrwI93QgAAQJy3kHdCAAAAAgqRd0IAAMBnXJF3QgAAgM2ukXdCAABAMwGSd0I=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"portfolio_return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"ANWV3r27Yr8AgGKB8uR9v0BmmzyGo4m/gD+UPNk/hr+ArSyajRuBv8Dx6LpxtIW/gFxyUIxBlr/A+R9F+KiKvwCvnmcKRoe/gES2WAOXgr+ALKyofeOMvwAwmjb9eX2/QPxDpgZ4hb+Ah9Q2/TSBvwDmPRqPzXm/ADRPtbUPRb8ATvXZppFjvwDIDVIBkGs/AAyIvjyvSL+A3VjPGtOEPwBvKN5HpIY/ALRZIESZaj8AgK39rWdcvwDYW8O2S2M/ALbH9Mm3Zj8AVuJhw/FUvwCjD7UcnXk/gDpKVb7ngz8A0spb8pB9PwAgMd/0Anc/AJnS/1xthz8ABcLK+e+QP4A+aPHe8Is/APhLj1WtgT+AL4ZMFlGKPwDgOs97BIY/gCsHxOO4kj/AHu9rojObP4BiMq2oupY/QJrxS7Dplz8=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"display_name\",[\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\",\"\\u91d1\\u57df\\u533b\\u5b66\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p9138\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p9139\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9134\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#8b8b8b\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9141\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#8b8b8b\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9135\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#8b8b8b\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9136\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#8b8b8b\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p9152\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p9142\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p9144\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p9143\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AABA8fp/d0IAAIAi8oB3QgAAQIhEgXdCAAAA7paBd0IAAMBT6YF3QgAAgLk7gndCAADA6jKDd0IAAIBQhYN3QgAAQLbXg3dCAAAAHCqEd0IAAMCBfIR3QgAAALNzhXdCAADAGMaFd0IAAIB+GIZ3QgAAQORqhndCAAAASr2Gd0IAAEB7tId3QgAAAOEGiHdCAADARlmId0IAAICsq4h3QgAAQBL+iHdCAABAqUeKd0IAAAAPmop3QgAAwHTsindCAACA2j6Ld0IAAMALNox3QgAAgHGIjHdCAABA19qMd0IAAAA9LY13QgAAwKJ/jXdCAAAA1HaOd0IAAMA5yY53QgAAgJ8bj3dCAABABW6Pd0IAAABrwI93QgAAQJy3kHdCAAAAAgqRd0IAAMBnXJF3QgAAgM2ukXdCAABAMwGSd0I=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"portfolio_return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AIj3DWTHWj8AYpn3bjyLvwC82YuR+ZK/4KJV09KTkL+Ai4FlD1B3vwAtz4WFYns/AMvmCJ+Vhb8AgSWD50SJv4CpKgsa2oe/gIK8UiK+gb/g/ZCFWb6Xv0Chdbmu+JS/gAUL3QjNlr+A4QjX8nCdv8A5sUU61J6/QGECPBvzlb/gKG8h+q2Yv4BJ4MPr4n2/AOe3F2K+gL+AWKjezu96v4BjISOmVXK/AGKfF5rLW79Ak3jR//aGv0CqRg1BZYe/4NCUgbxVkL9AMIZKGOKZv2Cge88flJO/YDV9F2ygkb/AGbzK/iyNvwCbY7C2eJW/wGnmCU6QjL8A6LhT3q13vwAMO+d4B3y/AKmKrRE2Z78ADKzGRDSAP4BFDQ9kmIk/QHUrkVAakj9ATdikZ16UP4CsDBmsh48/QPj+9wE2oD8=\"},\"shape\":[40],\"dtype\":\"float64\",\"order\":\"little\"}],[\"display_name\",[\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\",\"\\u9633\\u5149\\u7535\\u6e90\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p9153\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p9154\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9149\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#17becf\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9156\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#17becf\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9150\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#17becf\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p9151\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"portfolio_return\"},\"line_color\":\"#17becf\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p8973\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p8962\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"p9076\"},{\"id\":\"p9092\"},{\"id\":\"p9107\"},{\"id\":\"p9122\"},{\"id\":\"p9137\"},{\"id\":\"p9152\"}],\"tooltips\":[[\"display_name\",\"@{display_name}\"],[\"date\",\"@{date}{%F %T}\"],[\"portfolio_return\",\"@{portfolio_return}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@{date}\",\"datetime\"]]}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p9034\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p9035\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p9036\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p9037\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p9038\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p9039\"}],\"active_drag\":{\"id\":\"p9035\"},\"active_scroll\":{\"id\":\"p9036\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p9027\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p9029\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p9028\"},\"axis_label\":\"portfolio_return\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p9030\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p9079\",\"attributes\":{\"location\":[0,0],\"title\":\"display_name\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p9080\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u4e09\\u53cb\\u5316\\u5de5\"},\"renderers\":[{\"id\":\"p9076\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p9095\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u5929\\u8d50\\u6750\\u6599\"},\"renderers\":[{\"id\":\"p9092\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p9110\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u5c0f\\u5546\\u54c1\\u57ce\"},\"renderers\":[{\"id\":\"p9107\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p9125\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u5fb7\\u8d5b\\u897f\\u5a01\"},\"renderers\":[{\"id\":\"p9122\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p9140\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u91d1\\u57df\\u533b\\u5b66\"},\"renderers\":[{\"id\":\"p9137\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p9155\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"\\u9633\\u5149\\u7535\\u6e90\"},\"renderers\":[{\"id\":\"p9152\"}]}}]}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p8984\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"DatetimeTicker\",\"id\":\"p8986\",\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p8987\",\"attributes\":{\"num_minor_ticks\":0,\"mantissas\":[1,2,5],\"max_interval\":500.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p8988\",\"attributes\":{\"num_minor_ticks\":0,\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"min_interval\":1000.0,\"max_interval\":1800000.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p8989\",\"attributes\":{\"num_minor_ticks\":0,\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"min_interval\":3600000.0,\"max_interval\":43200000.0}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p8990\",\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p8991\",\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p8992\",\"attributes\":{\"days\":[1,8,15,22]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p8993\",\"attributes\":{\"days\":[1,15]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p8994\",\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p8995\",\"attributes\":{\"months\":[0,2,4,6,8,10]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p8996\",\"attributes\":{\"months\":[0,4,8]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p8997\",\"attributes\":{\"months\":[0,6]}},{\"type\":\"object\",\"name\":\"YearsTicker\",\"id\":\"p8998\"}]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p8985\"},\"axis_label\":\"date\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p8999\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p9026\",\"attributes\":{\"axis\":{\"id\":\"p8984\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p9033\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p9027\"},\"grid_line_color\":null}}],\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\"}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p9224\",\"attributes\":{\"name\":\"HSpacer11535\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p8958\"},{\"id\":\"p8956\"},{\"id\":\"p8957\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"callbacks\":{\"type\":\"map\"}}};\n",
" var render_items = [{\"docid\":\"49a0e724-c5c6-412e-bda9-f44e89df8d09\",\"roots\":{\"p8955\":\"d175c0c7-8290-496b-a047-65eb1d8d097e\"},\"root_ids\":[\"p8955\"]}];\n",
" var docs = Object.values(docs_json)\n",
" if (!docs) {\n",
" return\n",
" }\n",
" const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
" const is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1\n",
" function embed_document(root) {\n",
" var Bokeh = get_bokeh(root)\n",
" Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
" for (const render_item of render_items) {\n",
" for (const root_id of render_item.root_ids) {\n",
"\tconst id_el = document.getElementById(root_id)\n",
"\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",
"\t const root_el = id_el.children[0]\n",
"\t root_el.id = root_el.id + '-rendered'\n",
"\t}\n",
" }\n",
" }\n",
" }\n",
" function get_bokeh(root) {\n",
" if (root.Bokeh === undefined) {\n",
" return null\n",
" } else if (root.Bokeh.version !== py_version && !is_dev) {\n",
" if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
"\treturn null\n",
" }\n",
" return root.Bokeh.versions.get(py_version);\n",
" } else if (root.Bokeh.version === py_version) {\n",
" return root.Bokeh\n",
" }\n",
" return null\n",
" }\n",
" function is_loaded(root) {\n",
" var Bokeh = get_bokeh(root)\n",
" return (Bokeh != null && Bokeh.Panel !== undefined)\n",
" }\n",
" if (is_loaded(root)) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (is_loaded(root)) {\n",
" clearInterval(timer);\n",
" embed_document(root);\n",
" } else if (document.readyState == \"complete\") {\n",
" attempts++;\n",
" if (attempts > 200) {\n",
" clearInterval(timer);\n",
"\t var Bokeh = get_bokeh(root)\n",
"\t if (Bokeh == null || Bokeh.Panel == null) {\n",
" console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
"\t } else {\n",
"\t console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
"\t embed_document(root)\n",
"\t }\n",
" }\n",
" }\n",
" }, 25, root)\n",
" }\n",
"})(window);</script>"
],
"text/plain": [
":NdOverlay [display_name]\n",
" :Curve [date] (portfolio_return)"
]
},
"execution_count": 69,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "p8955"
}
},
"output_type": "execute_result"
}
],
"source": [
"## i'm going to check the return in portfolio to determine eaches contribution to the lost\n",
"date_range = (datetime(2021,3,5), datetime(2021,4,30))\n",
"selected_df = calculated_p_stock[(calculated_p_stock.date <= date_range[1]) & (calculated_p_stock.date >= date_range[0])]\n",
"selected_df['contribution'] = selected_df['portfolio_return'] / selected_df.groupby('date')['portfolio_return'].transform('sum')\n",
"selected_df[selected_df.date == datetime(2021,3,5)]\n",
"selected_df.hvplot.line(x='date',y='portfolio_return',by='display_name')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"<div id='p1892'>\n",
" <div id=\"e993c4d9-a08f-4bee-9cc7-ec54b58d56d4\" data-root-id=\"p1892\" style=\"display: contents;\"></div>\n",
"</div>\n",
"<script type=\"application/javascript\">(function(root) {\n",
" var docs_json = {\"9c3923c5-f249-40ff-aee6-a5b600c0d3fe\":{\"version\":\"3.1.1\",\"title\":\"Bokeh Application\",\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}],\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p1892\",\"attributes\":{\"name\":\"Row01547\",\"tags\":[\"embedded\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1895\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p2165\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1893\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1894\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.1.1/dist/bundled/theme/native.css\"}}],\"min_width\":700,\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p1896\",\"attributes\":{\"name\":\"HSpacer01558\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1895\"},{\"id\":\"p1893\"},{\"id\":\"p1894\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1905\",\"attributes\":{\"width\":700,\"height\":300,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1897\",\"attributes\":{\"tags\":[[[\"date\",\"date\",null]]],\"start\":1609804800000.0,\"end\":1641772800000.0,\"reset_start\":1609804800000.0,\"reset_end\":1641772800000.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1898\",\"attributes\":{\"tags\":[[[\"return\",\"return\",null]]],\"start\":-0.5882833139924352,\"end\":2.1612775521990106,\"reset_start\":-0.5882833139924352,\"reset_end\":2.1612775521990106}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1917\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1919\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1908\",\"attributes\":{\"text\":\"Portfolio Return\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2016\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2006\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2008\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2007\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAfv1sd0IAAMDjT213QgAAgEmibXdCAABAr/Rtd0IAAIDg6253QgAAQEY+b3dCAAAArJBvd0IAAMAR4293QgAAgHc1cHdCAADAqCxxd0IAAIAOf3F3QgAAQHTRcXdCAAAA2iNyd0IAAMA/dnJ3QgAAAHFtc3dCAADA1r9zd0IAAIA8EnR3QgAAQKJkdHdCAAAACLd0d0IAAEA5rnV3QgAAAJ8AdndCAADABFN2d0IAAIBqpXZ3QgAAQND3dndCAACAAe93d0IAAEBnQXh3QgAAAM2TeHdCAAAA+yZ7d0IAAMBgeXt3QgAAAJJwfHdCAADA98J8d0IAAIBdFX13QgAAQMNnfXdCAAAAKbp9d0IAAEBasX53QgAAAMADf3dCAADAJVZ/d0IAAICLqH93QgAAQPH6f3dCAACAIvKAd0IAAECIRIF3QgAAAO6WgXdCAADAU+mBd0IAAIC5O4J3QgAAwOoyg3dCAACAUIWDd0IAAEC214N3QgAAABwqhHdCAADAgXyEd0IAAACzc4V3QgAAwBjGhXdCAACAfhiGd0IAAEDkaoZ3QgAAAEq9hndCAABAe7SHd0IAAADhBoh3QgAAwEZZiHdCAACArKuId0IAAEAS/oh3QgAAQKlHindCAAAAD5qKd0IAAMB07Ip3QgAAgNo+i3dCAADACzaMd0IAAIBxiIx3QgAAQNfajHdCAAAAPS2Nd0IAAMCif413QgAAANR2jndCAADAOcmOd0IAAICfG493QgAAQAVuj3dCAAAAa8CPd0IAAECct5B3QgAAAAIKkXdCAADAZ1yRd0IAAIDNrpF3QgAAQDMBkndCAADAle+Td0IAAID7QZR3QgAAwCw5lXdCAACAkouVd0IAAED43ZV3QgAAAF4wlndCAADAw4KWd0IAAAD1eZd3QgAAwFrMl3dCAACAwB6Yd0IAAEAmcZh3QgAAAIzDmHdCAABAvbqZd0IAAAAjDZp3QgAAwIhfmndCAACA7rGad0IAAEBUBJt3QgAAgIX7m3dCAABA602cd0IAAABRoJx3QgAAwLbynHdCAACAHEWdd0IAAMBNPJ53QgAAgLOOnndCAABAGeGed0IAAAB/M593QgAAwOSFn3dCAADAe8+gd0IAAIDhIaF3QgAAQEd0oXdCAAAArcahd0IAAEDevaJ3QgAAAEQQo3dCAADAqWKjd0IAAIAPtaN3QgAAQHUHpHdCAACApv6kd0IAAEAMUaV3QgAAAHKjpXdCAADA1/Wld0IAAIA9SKZ3QgAAwG4/p3dCAACA1JGnd0IAAEA65Kd3QgAAAKA2qHdCAADABYmod0IAAAA3gKl3QgAAwJzSqXdCAACAAiWqd0IAAEBod6p3QgAAAM7JqndCAABA/8Crd0IAAABlE6x3QgAAwMplrHdCAACAMLisd0IAAECWCq13QgAAgMcBrndCAABALVSud0IAAACTpq53QgAAwPj4rndCAACAXkuvd0IAAMCPQrB3QgAAgPWUsHdCAABAW+ewd0IAAADBObF3QgAAwCaMsXdCAAAAWIOyd0IAAMC91bJ3QgAAgCMos3dCAABAiXqzd0IAAADvzLN3QgAAQCDEtHdCAAAAhha1d0IAAMDraLV3QgAAgFG7tXdCAABAtw22d0IAAIDoBLd3QgAAQE5Xt3dCAAAAtKm3d0IAAMAZ/Ld3QgAAgH9OuHdCAADAsEW5d0IAAIAWmLl3QgAAQHzquXdCAAAA4jy6d0IAAMBHj7p3QgAAAHmGu3dCAADA3ti7d0IAAIBEK7x3QgAAQKp9vHdCAAAAENC8d0IAAEBBx713QgAAAKcZvndCAADADGy+d0IAAIByvr53QgAAQNgQv3dCAAAA1azAd0IAAMA6/8B3QgAAgKBRwXdCAADA0UjCd0IAAIA3m8J3QgAAQJ3twndCAAAAA0DDd0IAAAAx08V3QgAAQGLKxndCAAAAyBzHd0IAAMAtb8d3QgAAgJPBx3dCAABA+RPId0IAAIAqC8l3QgAAQJBdyXdCAAAA9q/Jd0IAAMBbAsp3QgAAgMFUyndCAADA8kvLd0IAAIBYnst3QgAAQL7wy3dCAAAAJEPMd0IAAMCJlcx3QgAAALuMzXdCAADAIN/Nd0IAAICGMc53QgAAQOyDzndCAAAAUtbOd0IAAECDzc93QgAAAOkf0HdCAADATnLQd0IAAIC0xNB3QgAAQBoX0XdCAACASw7Sd0IAAECxYNJ3QgAAABez0ndCAADAfAXTd0IAAIDiV9N3QgAAwBNP1HdCAACAeaHUd0IAAEDf89R3QgAAAEVG1XdCAADAqpjVd0IAAADcj9Z3QgAAwEHi1ndCAACApzTXd0IAAEANh9d3QgAAAHPZ13dCAABApNDYd0IAAAAKI9l3QgAAwG912XdCAACA1cfZd0IAAEA7Gtp3QgAAgGwR23dCAABA0mPbd0IAAAA4ttt3QgAAwJ0I3HdCAACAA1vcd0IAAMA0Ut13QgAAgJqk3XdCAABAAPfdd0IAAABmSd53QgAAwMub3ndCAAAA/ZLfd0IAAMBi5d93QgAAgMg34HdCAABALorgd0IAAACU3OB3QgAAACsm4ndCAADAkHjid0IAAID2yuJ3QgAAQFwd43dCAACAjRTkd0I=\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ticker\",[\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\",\"002709.XSHE\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2017\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2018\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2013\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2021\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2014\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2015\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2032\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2022\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2024\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2023\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAfv1sd0IAAMDjT213QgAAgEmibXdCAABAr/Rtd0IAAIDg6253QgAAQEY+b3dCAAAArJBvd0IAAMAR4293QgAAgHc1cHdCAADAqCxxd0IAAIAOf3F3QgAAQHTRcXdCAAAA2iNyd0IAAMA/dnJ3QgAAAHFtc3dCAADA1r9zd0IAAIA8EnR3QgAAQKJkdHdCAAAACLd0d0IAAEA5rnV3QgAAAJ8AdndCAADABFN2d0IAAIBqpXZ3QgAAQND3dndCAACAAe93d0IAAEBnQXh3QgAAAM2TeHdCAAAA+yZ7d0IAAMBgeXt3QgAAAJJwfHdCAADA98J8d0IAAIBdFX13QgAAQMNnfXdCAAAAKbp9d0IAAEBasX53QgAAAMADf3dCAADAJVZ/d0IAAICLqH93QgAAQPH6f3dCAACAIvKAd0IAAECIRIF3QgAAAO6WgXdCAADAU+mBd0IAAIC5O4J3QgAAwOoyg3dCAACAUIWDd0IAAEC214N3QgAAABwqhHdCAADAgXyEd0IAAACzc4V3QgAAwBjGhXdCAACAfhiGd0IAAEDkaoZ3QgAAAEq9hndCAABAe7SHd0IAAADhBoh3QgAAwEZZiHdCAACArKuId0IAAEAS/oh3QgAAQKlHindCAAAAD5qKd0IAAMB07Ip3QgAAgNo+i3dCAADACzaMd0IAAIBxiIx3QgAAQNfajHdCAAAAPS2Nd0IAAMCif413QgAAANR2jndCAADAOcmOd0IAAICfG493QgAAQAVuj3dCAAAAa8CPd0IAAECct5B3QgAAAAIKkXdCAADAZ1yRd0IAAIDNrpF3QgAAQDMBkndCAADAle+Td0IAAID7QZR3QgAAwCw5lXdCAACAkouVd0IAAED43ZV3QgAAAF4wlndCAADAw4KWd0IAAAD1eZd3QgAAwFrMl3dCAACAwB6Yd0IAAEAmcZh3QgAAAIzDmHdCAABAvbqZd0IAAAAjDZp3QgAAwIhfmndCAACA7rGad0IAAEBUBJt3QgAAgIX7m3dCAABA602cd0IAAABRoJx3QgAAwLbynHdCAACAHEWdd0IAAMBNPJ53QgAAgLOOnndCAABAGeGed0IAAAB/M593QgAAwOSFn3dCAADAe8+gd0IAAIDhIaF3QgAAQEd0oXdCAAAArcahd0IAAEDevaJ3QgAAAEQQo3dCAADAqWKjd0IAAIAPtaN3QgAAQHUHpHdCAACApv6kd0IAAEAMUaV3QgAAAHKjpXdCAADA1/Wld0IAAIA9SKZ3QgAAwG4/p3dCAACA1JGnd0IAAEA65Kd3QgAAAKA2qHdCAADABYmod0IAAAA3gKl3QgAAwJzSqXdCAACAAiWqd0IAAEBod6p3QgAAAM7JqndCAABA/8Crd0IAAABlE6x3QgAAwMplrHdCAACAMLisd0IAAECWCq13QgAAgMcBrndCAABALVSud0IAAACTpq53QgAAwPj4rndCAACAXkuvd0IAAMCPQrB3QgAAgPWUsHdCAABAW+ewd0IAAADBObF3QgAAwCaMsXdCAAAAWIOyd0IAAMC91bJ3QgAAgCMos3dCAABAiXqzd0IAAADvzLN3QgAAQCDEtHdCAAAAhha1d0IAAMDraLV3QgAAgFG7tXdCAABAtw22d0IAAIDoBLd3QgAAQE5Xt3dCAAAAtKm3d0IAAMAZ/Ld3QgAAgH9OuHdCAADAsEW5d0IAAIAWmLl3QgAAQHzquXdCAAAA4jy6d0IAAMBHj7p3QgAAAHmGu3dCAADA3ti7d0IAAIBEK7x3QgAAQKp9vHdCAAAAENC8d0IAAEBBx713QgAAAKcZvndCAADADGy+d0IAAIByvr53QgAAQNgQv3dCAAAA1azAd0IAAMA6/8B3QgAAgKBRwXdCAADA0UjCd0IAAIA3m8J3QgAAQJ3twndCAAAAA0DDd0IAAAAx08V3QgAAQGLKxndCAAAAyBzHd0IAAMAtb8d3QgAAgJPBx3dCAABA+RPId0IAAIAqC8l3QgAAQJBdyXdCAAAA9q/Jd0IAAMBbAsp3QgAAgMFUyndCAADA8kvLd0IAAIBYnst3QgAAQL7wy3dCAAAAJEPMd0IAAMCJlcx3QgAAALuMzXdCAADAIN/Nd0IAAICGMc53QgAAQOyDzndCAAAAUtbOd0IAAECDzc93QgAAAOkf0HdCAADATnLQd0IAAIC0xNB3QgAAQBoX0XdCAACASw7Sd0IAAECxYNJ3QgAAABez0ndCAADAfAXTd0IAAIDiV9N3QgAAwBNP1HdCAACAeaHUd0IAAEDf89R3QgAAAEVG1XdCAADAqpjVd0IAAADcj9Z3QgAAwEHi1ndCAACApzTXd0IAAEANh9d3QgAAAHPZ13dCAABApNDYd0IAAAAKI9l3QgAAwG912XdCAACA1cfZd0IAAEA7Gtp3QgAAgGwR23dCAABA0mPbd0IAAAA4ttt3QgAAwJ0I3HdCAACAA1vcd0IAAMA0Ut13QgAAgJqk3XdCAABAAPfdd0IAAABmSd53QgAAwMub3ndCAAAA/ZLfd0IAAMBi5d93QgAAgMg34HdCAABALorgd0IAAACU3OB3QgAAACsm4ndCAADAkHjid0IAAID2yuJ3QgAAQFwd43dCAACAjRTkd0I=\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ticker\",[\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\",\"002920.XSHE\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2033\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2034\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2029\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2036\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2030\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2031\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2047\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2037\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2039\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2038\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAfv1sd0IAAMDjT213QgAAgEmibXdCAABAr/Rtd0IAAIDg6253QgAAQEY+b3dCAAAArJBvd0IAAMAR4293QgAAgHc1cHdCAADAqCxxd0IAAIAOf3F3QgAAQHTRcXdCAAAA2iNyd0IAAMA/dnJ3QgAAAHFtc3dCAADA1r9zd0IAAIA8EnR3QgAAQKJkdHdCAAAACLd0d0IAAEA5rnV3QgAAAJ8AdndCAADABFN2d0IAAIBqpXZ3QgAAQND3dndCAACAAe93d0IAAEBnQXh3QgAAAM2TeHdCAAAA+yZ7d0IAAMBgeXt3QgAAAJJwfHdCAADA98J8d0IAAIBdFX13QgAAQMNnfXdCAAAAKbp9d0IAAEBasX53QgAAAMADf3dCAADAJVZ/d0IAAICLqH93QgAAQPH6f3dCAACAIvKAd0IAAECIRIF3QgAAAO6WgXdCAADAU+mBd0IAAIC5O4J3QgAAwOoyg3dCAACAUIWDd0IAAEC214N3QgAAABwqhHdCAADAgXyEd0IAAACzc4V3QgAAwBjGhXdCAACAfhiGd0IAAEDkaoZ3QgAAAEq9hndCAABAe7SHd0IAAADhBoh3QgAAwEZZiHdCAACArKuId0IAAEAS/oh3QgAAQKlHindCAAAAD5qKd0IAAMB07Ip3QgAAgNo+i3dCAADACzaMd0IAAIBxiIx3QgAAQNfajHdCAAAAPS2Nd0IAAMCif413QgAAANR2jndCAADAOcmOd0IAAICfG493QgAAQAVuj3dCAAAAa8CPd0IAAECct5B3QgAAAAIKkXdCAADAZ1yRd0IAAIDNrpF3QgAAQDMBkndCAADAle+Td0IAAID7QZR3QgAAwCw5lXdCAACAkouVd0IAAED43ZV3QgAAAF4wlndCAADAw4KWd0IAAAD1eZd3QgAAwFrMl3dCAACAwB6Yd0IAAEAmcZh3QgAAAIzDmHdCAABAvbqZd0IAAAAjDZp3QgAAwIhfmndCAACA7rGad0IAAEBUBJt3QgAAgIX7m3dCAABA602cd0IAAABRoJx3QgAAwLbynHdCAACAHEWdd0IAAMBNPJ53QgAAgLOOnndCAABAGeGed0IAAAB/M593QgAAwOSFn3dCAADAe8+gd0IAAIDhIaF3QgAAQEd0oXdCAAAArcahd0IAAEDevaJ3QgAAAEQQo3dCAADAqWKjd0IAAIAPtaN3QgAAQHUHpHdCAACApv6kd0IAAEAMUaV3QgAAAHKjpXdCAADA1/Wld0IAAIA9SKZ3QgAAwG4/p3dCAACA1JGnd0IAAEA65Kd3QgAAAKA2qHdCAADABYmod0IAAAA3gKl3QgAAwJzSqXdCAACAAiWqd0IAAEBod6p3QgAAAM7JqndCAABA/8Crd0IAAABlE6x3QgAAwMplrHdCAACAMLisd0IAAECWCq13QgAAgMcBrndCAABALVSud0IAAACTpq53QgAAwPj4rndCAACAXkuvd0IAAMCPQrB3QgAAgPWUsHdCAABAW+ewd0IAAADBObF3QgAAwCaMsXdCAAAAWIOyd0IAAMC91bJ3QgAAgCMos3dCAABAiXqzd0IAAADvzLN3QgAAQCDEtHdCAAAAhha1d0IAAMDraLV3QgAAgFG7tXdCAABAtw22d0IAAIDoBLd3QgAAQE5Xt3dCAAAAtKm3d0IAAMAZ/Ld3QgAAgH9OuHdCAADAsEW5d0IAAIAWmLl3QgAAQHzquXdCAAAA4jy6d0IAAMBHj7p3QgAAAHmGu3dCAADA3ti7d0IAAIBEK7x3QgAAQKp9vHdCAAAAENC8d0IAAEBBx713QgAAAKcZvndCAADADGy+d0IAAIByvr53QgAAQNgQv3dCAAAA1azAd0IAAMA6/8B3QgAAgKBRwXdCAADA0UjCd0IAAIA3m8J3QgAAQJ3twndCAAAAA0DDd0IAAAAx08V3QgAAQGLKxndCAAAAyBzHd0IAAMAtb8d3QgAAgJPBx3dCAABA+RPId0IAAIAqC8l3QgAAQJBdyXdCAAAA9q/Jd0IAAMBbAsp3QgAAgMFUyndCAADA8kvLd0IAAIBYnst3QgAAQL7wy3dCAAAAJEPMd0IAAMCJlcx3QgAAALuMzXdCAADAIN/Nd0IAAICGMc53QgAAQOyDzndCAAAAUtbOd0IAAECDzc93QgAAAOkf0HdCAADATnLQd0IAAIC0xNB3QgAAQBoX0XdCAACASw7Sd0IAAECxYNJ3QgAAABez0ndCAADAfAXTd0IAAIDiV9N3QgAAwBNP1HdCAACAeaHUd0IAAEDf89R3QgAAAEVG1XdCAADAqpjVd0IAAADcj9Z3QgAAwEHi1ndCAACApzTXd0IAAEANh9d3QgAAAHPZ13dCAABApNDYd0IAAAAKI9l3QgAAwG912XdCAACA1cfZd0IAAEA7Gtp3QgAAgGwR23dCAABA0mPbd0IAAAA4ttt3QgAAwJ0I3HdCAACAA1vcd0IAAMA0Ut13QgAAgJqk3XdCAABAAPfdd0IAAABmSd53QgAAwMub3ndCAAAA/ZLfd0IAAMBi5d93QgAAgMg34HdCAABALorgd0IAAACU3OB3QgAAACsm4ndCAADAkHjid0IAAID2yuJ3QgAAQFwd43dCAACAjRTkd0I=\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ticker\",[\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\",\"300274.XSHE\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2048\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2049\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2044\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#e5ae38\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2051\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#e5ae38\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2045\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#e5ae38\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2046\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#e5ae38\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2062\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2052\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2054\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2053\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAfv1sd0IAAMDjT213QgAAgEmibXdCAABAr/Rtd0IAAIDg6253QgAAQEY+b3dCAAAArJBvd0IAAMAR4293QgAAgHc1cHdCAADAqCxxd0IAAIAOf3F3QgAAQHTRcXdCAAAA2iNyd0IAAMA/dnJ3QgAAAHFtc3dCAADA1r9zd0IAAIA8EnR3QgAAQKJkdHdCAAAACLd0d0IAAEA5rnV3QgAAAJ8AdndCAADABFN2d0IAAIBqpXZ3QgAAQND3dndCAACAAe93d0IAAEBnQXh3QgAAAM2TeHdCAAAA+yZ7d0IAAMBgeXt3QgAAAJJwfHdCAADA98J8d0IAAIBdFX13QgAAQMNnfXdCAAAAKbp9d0IAAEBasX53QgAAAMADf3dCAADAJVZ/d0IAAICLqH93QgAAQPH6f3dCAACAIvKAd0IAAECIRIF3QgAAAO6WgXdCAADAU+mBd0IAAIC5O4J3QgAAwOoyg3dCAACAUIWDd0IAAEC214N3QgAAABwqhHdCAADAgXyEd0IAAACzc4V3QgAAwBjGhXdCAACAfhiGd0IAAEDkaoZ3QgAAAEq9hndCAABAe7SHd0IAAADhBoh3QgAAwEZZiHdCAACArKuId0IAAEAS/oh3QgAAQKlHindCAAAAD5qKd0IAAMB07Ip3QgAAgNo+i3dCAADACzaMd0IAAIBxiIx3QgAAQNfajHdCAAAAPS2Nd0IAAMCif413QgAAANR2jndCAADAOcmOd0IAAICfG493QgAAQAVuj3dCAAAAa8CPd0IAAECct5B3QgAAAAIKkXdCAADAZ1yRd0IAAIDNrpF3QgAAQDMBkndCAADAle+Td0IAAID7QZR3QgAAwCw5lXdCAACAkouVd0IAAED43ZV3QgAAAF4wlndCAADAw4KWd0IAAAD1eZd3QgAAwFrMl3dCAACAwB6Yd0IAAEAmcZh3QgAAAIzDmHdCAABAvbqZd0IAAAAjDZp3QgAAwIhfmndCAACA7rGad0IAAEBUBJt3QgAAgIX7m3dCAABA602cd0IAAABRoJx3QgAAwLbynHdCAACAHEWdd0IAAMBNPJ53QgAAgLOOnndCAABAGeGed0IAAAB/M593QgAAwOSFn3dCAADAe8+gd0IAAIDhIaF3QgAAQEd0oXdCAAAArcahd0IAAEDevaJ3QgAAAEQQo3dCAADAqWKjd0IAAIAPtaN3QgAAQHUHpHdCAACApv6kd0IAAEAMUaV3QgAAAHKjpXdCAADA1/Wld0IAAIA9SKZ3QgAAwG4/p3dCAACA1JGnd0IAAEA65Kd3QgAAAKA2qHdCAADABYmod0IAAAA3gKl3QgAAwJzSqXdCAACAAiWqd0IAAEBod6p3QgAAAM7JqndCAABA/8Crd0IAAABlE6x3QgAAwMplrHdCAACAMLisd0IAAECWCq13QgAAgMcBrndCAABALVSud0IAAACTpq53QgAAwPj4rndCAACAXkuvd0IAAMCPQrB3QgAAgPWUsHdCAABAW+ewd0IAAADBObF3QgAAwCaMsXdCAAAAWIOyd0IAAMC91bJ3QgAAgCMos3dCAABAiXqzd0IAAADvzLN3QgAAQCDEtHdCAAAAhha1d0IAAMDraLV3QgAAgFG7tXdCAABAtw22d0IAAIDoBLd3QgAAQE5Xt3dCAAAAtKm3d0IAAMAZ/Ld3QgAAgH9OuHdCAADAsEW5d0IAAIAWmLl3QgAAQHzquXdCAAAA4jy6d0IAAMBHj7p3QgAAAHmGu3dCAADA3ti7d0IAAIBEK7x3QgAAQKp9vHdCAAAAENC8d0IAAEBBx713QgAAAKcZvndCAADADGy+d0IAAIByvr53QgAAQNgQv3dCAAAA1azAd0IAAMA6/8B3QgAAgKBRwXdCAADA0UjCd0IAAIA3m8J3QgAAQJ3twndCAAAAA0DDd0IAAAAx08V3QgAAQGLKxndCAAAAyBzHd0IAAMAtb8d3QgAAgJPBx3dCAABA+RPId0IAAIAqC8l3QgAAQJBdyXdCAAAA9q/Jd0IAAMBbAsp3QgAAgMFUyndCAADA8kvLd0IAAIBYnst3QgAAQL7wy3dCAAAAJEPMd0IAAMCJlcx3QgAAALuMzXdCAADAIN/Nd0IAAICGMc53QgAAQOyDzndCAAAAUtbOd0IAAECDzc93QgAAAOkf0HdCAADATnLQd0IAAIC0xNB3QgAAQBoX0XdCAACASw7Sd0IAAECxYNJ3QgAAABez0ndCAADAfAXTd0IAAIDiV9N3QgAAwBNP1HdCAACAeaHUd0IAAEDf89R3QgAAAEVG1XdCAADAqpjVd0IAAADcj9Z3QgAAwEHi1ndCAACApzTXd0IAAEANh9d3QgAAAHPZ13dCAABApNDYd0IAAAAKI9l3QgAAwG912XdCAACA1cfZd0IAAEA7Gtp3QgAAgGwR23dCAABA0mPbd0IAAAA4ttt3QgAAwJ0I3HdCAACAA1vcd0IAAMA0Ut13QgAAgJqk3XdCAABAAPfdd0IAAABmSd53QgAAwMub3ndCAAAA/ZLfd0IAAMBi5d93QgAAgMg34HdCAABALorgd0IAAACU3OB3QgAAACsm4ndCAADAkHjid0IAAID2yuJ3QgAAQFwd43dCAACAjRTkd0I=\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ticker\",[\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\",\"600409.XSHG\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2063\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2064\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2059\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#6d904f\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2066\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#6d904f\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2060\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#6d904f\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2061\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#6d904f\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2077\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2067\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2069\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2068\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAfv1sd0IAAMDjT213QgAAgEmibXdCAABAr/Rtd0IAAIDg6253QgAAQEY+b3dCAAAArJBvd0IAAMAR4293QgAAgHc1cHdCAADAqCxxd0IAAIAOf3F3QgAAQHTRcXdCAAAA2iNyd0IAAMA/dnJ3QgAAAHFtc3dCAADA1r9zd0IAAIA8EnR3QgAAQKJkdHdCAAAACLd0d0IAAEA5rnV3QgAAAJ8AdndCAADABFN2d0IAAIBqpXZ3QgAAQND3dndCAACAAe93d0IAAEBnQXh3QgAAAM2TeHdCAAAA+yZ7d0IAAMBgeXt3QgAAAJJwfHdCAADA98J8d0IAAIBdFX13QgAAQMNnfXdCAAAAKbp9d0IAAEBasX53QgAAAMADf3dCAADAJVZ/d0IAAICLqH93QgAAQPH6f3dCAACAIvKAd0IAAECIRIF3QgAAAO6WgXdCAADAU+mBd0IAAIC5O4J3QgAAwOoyg3dCAACAUIWDd0IAAEC214N3QgAAABwqhHdCAADAgXyEd0IAAACzc4V3QgAAwBjGhXdCAACAfhiGd0IAAEDkaoZ3QgAAAEq9hndCAABAe7SHd0IAAADhBoh3QgAAwEZZiHdCAACArKuId0IAAEAS/oh3QgAAQKlHindCAAAAD5qKd0IAAMB07Ip3QgAAgNo+i3dCAADACzaMd0IAAIBxiIx3QgAAQNfajHdCAAAAPS2Nd0IAAMCif413QgAAANR2jndCAADAOcmOd0IAAICfG493QgAAQAVuj3dCAAAAa8CPd0IAAECct5B3QgAAAAIKkXdCAADAZ1yRd0IAAIDNrpF3QgAAQDMBkndCAADAle+Td0IAAID7QZR3QgAAwCw5lXdCAACAkouVd0IAAED43ZV3QgAAAF4wlndCAADAw4KWd0IAAAD1eZd3QgAAwFrMl3dCAACAwB6Yd0IAAEAmcZh3QgAAAIzDmHdCAABAvbqZd0IAAAAjDZp3QgAAwIhfmndCAACA7rGad0IAAEBUBJt3QgAAgIX7m3dCAABA602cd0IAAABRoJx3QgAAwLbynHdCAACAHEWdd0IAAMBNPJ53QgAAgLOOnndCAABAGeGed0IAAAB/M593QgAAwOSFn3dCAADAe8+gd0IAAIDhIaF3QgAAQEd0oXdCAAAArcahd0IAAEDevaJ3QgAAAEQQo3dCAADAqWKjd0IAAIAPtaN3QgAAQHUHpHdCAACApv6kd0IAAEAMUaV3QgAAAHKjpXdCAADA1/Wld0IAAIA9SKZ3QgAAwG4/p3dCAACA1JGnd0IAAEA65Kd3QgAAAKA2qHdCAADABYmod0IAAAA3gKl3QgAAwJzSqXdCAACAAiWqd0IAAEBod6p3QgAAAM7JqndCAABA/8Crd0IAAABlE6x3QgAAwMplrHdCAACAMLisd0IAAECWCq13QgAAgMcBrndCAABALVSud0IAAACTpq53QgAAwPj4rndCAACAXkuvd0IAAMCPQrB3QgAAgPWUsHdCAABAW+ewd0IAAADBObF3QgAAwCaMsXdCAAAAWIOyd0IAAMC91bJ3QgAAgCMos3dCAABAiXqzd0IAAADvzLN3QgAAQCDEtHdCAAAAhha1d0IAAMDraLV3QgAAgFG7tXdCAABAtw22d0IAAIDoBLd3QgAAQE5Xt3dCAAAAtKm3d0IAAMAZ/Ld3QgAAgH9OuHdCAADAsEW5d0IAAIAWmLl3QgAAQHzquXdCAAAA4jy6d0IAAMBHj7p3QgAAAHmGu3dCAADA3ti7d0IAAIBEK7x3QgAAQKp9vHdCAAAAENC8d0IAAEBBx713QgAAAKcZvndCAADADGy+d0IAAIByvr53QgAAQNgQv3dCAAAA1azAd0IAAMA6/8B3QgAAgKBRwXdCAADA0UjCd0IAAIA3m8J3QgAAQJ3twndCAAAAA0DDd0IAAAAx08V3QgAAQGLKxndCAAAAyBzHd0IAAMAtb8d3QgAAgJPBx3dCAABA+RPId0IAAIAqC8l3QgAAQJBdyXdCAAAA9q/Jd0IAAMBbAsp3QgAAgMFUyndCAADA8kvLd0IAAIBYnst3QgAAQL7wy3dCAAAAJEPMd0IAAMCJlcx3QgAAALuMzXdCAADAIN/Nd0IAAICGMc53QgAAQOyDzndCAAAAUtbOd0IAAECDzc93QgAAAOkf0HdCAADATnLQd0IAAIC0xNB3QgAAQBoX0XdCAACASw7Sd0IAAECxYNJ3QgAAABez0ndCAADAfAXTd0IAAIDiV9N3QgAAwBNP1HdCAACAeaHUd0IAAEDf89R3QgAAAEVG1XdCAADAqpjVd0IAAADcj9Z3QgAAwEHi1ndCAACApzTXd0IAAEANh9d3QgAAAHPZ13dCAABApNDYd0IAAAAKI9l3QgAAwG912XdCAACA1cfZd0IAAEA7Gtp3QgAAgGwR23dCAABA0mPbd0IAAAA4ttt3QgAAwJ0I3HdCAACAA1vcd0IAAMA0Ut13QgAAgJqk3XdCAABAAPfdd0IAAABmSd53QgAAwMub3ndCAAAA/ZLfd0IAAMBi5d93QgAAgMg34HdCAABALorgd0IAAACU3OB3QgAAACsm4ndCAADAkHjid0IAAID2yuJ3QgAAQFwd43dCAACAjRTkd0I=\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ticker\",[\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\",\"600415.XSHG\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2078\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2079\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2074\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#8b8b8b\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2081\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#8b8b8b\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2075\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#8b8b8b\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2076\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#8b8b8b\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p2092\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p2082\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p2084\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p2083\"},\"data\":{\"type\":\"map\",\"entries\":[[\"date\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAfv1sd0IAAMDjT213QgAAgEmibXdCAABAr/Rtd0IAAIDg6253QgAAQEY+b3dCAAAArJBvd0IAAMAR4293QgAAgHc1cHdCAADAqCxxd0IAAIAOf3F3QgAAQHTRcXdCAAAA2iNyd0IAAMA/dnJ3QgAAAHFtc3dCAADA1r9zd0IAAIA8EnR3QgAAQKJkdHdCAAAACLd0d0IAAEA5rnV3QgAAAJ8AdndCAADABFN2d0IAAIBqpXZ3QgAAQND3dndCAACAAe93d0IAAEBnQXh3QgAAAM2TeHdCAAAA+yZ7d0IAAMBgeXt3QgAAAJJwfHdCAADA98J8d0IAAIBdFX13QgAAQMNnfXdCAAAAKbp9d0IAAEBasX53QgAAAMADf3dCAADAJVZ/d0IAAICLqH93QgAAQPH6f3dCAACAIvKAd0IAAECIRIF3QgAAAO6WgXdCAADAU+mBd0IAAIC5O4J3QgAAwOoyg3dCAACAUIWDd0IAAEC214N3QgAAABwqhHdCAADAgXyEd0IAAACzc4V3QgAAwBjGhXdCAACAfhiGd0IAAEDkaoZ3QgAAAEq9hndCAABAe7SHd0IAAADhBoh3QgAAwEZZiHdCAACArKuId0IAAEAS/oh3QgAAQKlHindCAAAAD5qKd0IAAMB07Ip3QgAAgNo+i3dCAADACzaMd0IAAIBxiIx3QgAAQNfajHdCAAAAPS2Nd0IAAMCif413QgAAANR2jndCAADAOcmOd0IAAICfG493QgAAQAVuj3dCAAAAa8CPd0IAAECct5B3QgAAAAIKkXdCAADAZ1yRd0IAAIDNrpF3QgAAQDMBkndCAADAle+Td0IAAID7QZR3QgAAwCw5lXdCAACAkouVd0IAAED43ZV3QgAAAF4wlndCAADAw4KWd0IAAAD1eZd3QgAAwFrMl3dCAACAwB6Yd0IAAEAmcZh3QgAAAIzDmHdCAABAvbqZd0IAAAAjDZp3QgAAwIhfmndCAACA7rGad0IAAEBUBJt3QgAAgIX7m3dCAABA602cd0IAAABRoJx3QgAAwLbynHdCAACAHEWdd0IAAMBNPJ53QgAAgLOOnndCAABAGeGed0IAAAB/M593QgAAwOSFn3dCAADAe8+gd0IAAIDhIaF3QgAAQEd0oXdCAAAArcahd0IAAEDevaJ3QgAAAEQQo3dCAADAqWKjd0IAAIAPtaN3QgAAQHUHpHdCAACApv6kd0IAAEAMUaV3QgAAAHKjpXdCAADA1/Wld0IAAIA9SKZ3QgAAwG4/p3dCAACA1JGnd0IAAEA65Kd3QgAAAKA2qHdCAADABYmod0IAAAA3gKl3QgAAwJzSqXdCAACAAiWqd0IAAEBod6p3QgAAAM7JqndCAABA/8Crd0IAAABlE6x3QgAAwMplrHdCAACAMLisd0IAAECWCq13QgAAgMcBrndCAABALVSud0IAAACTpq53QgAAwPj4rndCAACAXkuvd0IAAMCPQrB3QgAAgPWUsHdCAABAW+ewd0IAAADBObF3QgAAwCaMsXdCAAAAWIOyd0IAAMC91bJ3QgAAgCMos3dCAABAiXqzd0IAAADvzLN3QgAAQCDEtHdCAAAAhha1d0IAAMDraLV3QgAAgFG7tXdCAABAtw22d0IAAIDoBLd3QgAAQE5Xt3dCAAAAtKm3d0IAAMAZ/Ld3QgAAgH9OuHdCAADAsEW5d0IAAIAWmLl3QgAAQHzquXdCAAAA4jy6d0IAAMBHj7p3QgAAAHmGu3dCAADA3ti7d0IAAIBEK7x3QgAAQKp9vHdCAAAAENC8d0IAAEBBx713QgAAAKcZvndCAADADGy+d0IAAIByvr53QgAAQNgQv3dCAAAA1azAd0IAAMA6/8B3QgAAgKBRwXdCAADA0UjCd0IAAIA3m8J3QgAAQJ3twndCAAAAA0DDd0IAAAAx08V3QgAAQGLKxndCAAAAyBzHd0IAAMAtb8d3QgAAgJPBx3dCAABA+RPId0IAAIAqC8l3QgAAQJBdyXdCAAAA9q/Jd0IAAMBbAsp3QgAAgMFUyndCAADA8kvLd0IAAIBYnst3QgAAQL7wy3dCAAAAJEPMd0IAAMCJlcx3QgAAALuMzXdCAADAIN/Nd0IAAICGMc53QgAAQOyDzndCAAAAUtbOd0IAAECDzc93QgAAAOkf0HdCAADATnLQd0IAAIC0xNB3QgAAQBoX0XdCAACASw7Sd0IAAECxYNJ3QgAAABez0ndCAADAfAXTd0IAAIDiV9N3QgAAwBNP1HdCAACAeaHUd0IAAEDf89R3QgAAAEVG1XdCAADAqpjVd0IAAADcj9Z3QgAAwEHi1ndCAACApzTXd0IAAEANh9d3QgAAAHPZ13dCAABApNDYd0IAAAAKI9l3QgAAwG912XdCAACA1cfZd0IAAEA7Gtp3QgAAgGwR23dCAABA0mPbd0IAAAA4ttt3QgAAwJ0I3HdCAACAA1vcd0IAAMA0Ut13QgAAgJqk3XdCAABAAPfdd0IAAABmSd53QgAAwMub3ndCAAAA/ZLfd0IAAMBi5d93QgAAgMg34HdCAABALorgd0IAAACU3OB3QgAAACsm4ndCAADAkHjid0IAAID2yuJ3QgAAQFwd43dCAACAjRTkd0I=\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"return\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[247],\"dtype\":\"float64\",\"order\":\"little\"}],[\"ticker\",[\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\",\"603882.XSHG\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p2093\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p2094\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2089\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#17becf\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2096\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#17becf\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2090\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#17becf\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p2091\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"date\"},\"y\":{\"type\":\"field\",\"field\":\"return\"},\"line_color\":\"#17becf\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1910\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1899\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"p2016\"},{\"id\":\"p2032\"},{\"id\":\"p2047\"},{\"id\":\"p2062\"},{\"id\":\"p2077\"},{\"id\":\"p2092\"}],\"tooltips\":[[\"ticker\",\"@{ticker}\"],[\"date\",\"@{date}{%F %T}\"],[\"return\",\"@{return}\"]],\"formatters\":{\"type\":\"map\",\"entries\":[[\"@{date}\",\"datetime\"]]}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1971\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1972\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1973\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1974\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1975\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1976\"}],\"active_drag\":{\"id\":\"p1972\"},\"active_scroll\":{\"id\":\"p1973\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1964\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1966\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"PrintfTickFormatter\",\"id\":\"p1985\",\"attributes\":{\"format\":\"%.2f\"}},\"axis_label\":\"return\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1967\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p2019\",\"attributes\":{\"location\":[0,0],\"title\":\"ticker\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2020\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"002709.XSHE\"},\"renderers\":[{\"id\":\"p2016\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2035\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"002920.XSHE\"},\"renderers\":[{\"id\":\"p2032\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2050\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"300274.XSHE\"},\"renderers\":[{\"id\":\"p2047\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2065\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"600409.XSHG\"},\"renderers\":[{\"id\":\"p2062\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2080\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"600415.XSHG\"},\"renderers\":[{\"id\":\"p2077\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p2095\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"603882.XSHG\"},\"renderers\":[{\"id\":\"p2092\"}]}}]}}],\"below\":[{\"type\":\"object\",\"name\":\"DatetimeAxis\",\"id\":\"p1921\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"DatetimeTicker\",\"id\":\"p1923\",\"attributes\":{\"num_minor_ticks\":5,\"tickers\":[{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1924\",\"attributes\":{\"num_minor_ticks\":0,\"mantissas\":[1,2,5],\"max_interval\":500.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1925\",\"attributes\":{\"num_minor_ticks\":0,\"base\":60,\"mantissas\":[1,2,5,10,15,20,30],\"min_interval\":1000.0,\"max_interval\":1800000.0}},{\"type\":\"object\",\"name\":\"AdaptiveTicker\",\"id\":\"p1926\",\"attributes\":{\"num_minor_ticks\":0,\"base\":24,\"mantissas\":[1,2,4,6,8,12],\"min_interval\":3600000.0,\"max_interval\":43200000.0}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1927\",\"attributes\":{\"days\":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1928\",\"attributes\":{\"days\":[1,4,7,10,13,16,19,22,25,28]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1929\",\"attributes\":{\"days\":[1,8,15,22]}},{\"type\":\"object\",\"name\":\"DaysTicker\",\"id\":\"p1930\",\"attributes\":{\"days\":[1,15]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1931\",\"attributes\":{\"months\":[0,1,2,3,4,5,6,7,8,9,10,11]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1932\",\"attributes\":{\"months\":[0,2,4,6,8,10]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1933\",\"attributes\":{\"months\":[0,4,8]}},{\"type\":\"object\",\"name\":\"MonthsTicker\",\"id\":\"p1934\",\"attributes\":{\"months\":[0,6]}},{\"type\":\"object\",\"name\":\"YearsTicker\",\"id\":\"p1935\"}]}},\"formatter\":{\"type\":\"object\",\"name\":\"DatetimeTickFormatter\",\"id\":\"p1922\"},\"axis_label\":\"date\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1936\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1963\",\"attributes\":{\"axis\":{\"id\":\"p1921\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1970\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1964\"},\"grid_line_color\":null}}],\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\"}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"p2163\",\"attributes\":{\"name\":\"HSpacer01561\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1895\"},{\"id\":\"p1893\"},{\"id\":\"p1894\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}}],\"callbacks\":{\"type\":\"map\"}}};\n",
" var render_items = [{\"docid\":\"9c3923c5-f249-40ff-aee6-a5b600c0d3fe\",\"roots\":{\"p1892\":\"e993c4d9-a08f-4bee-9cc7-ec54b58d56d4\"},\"root_ids\":[\"p1892\"]}];\n",
" var docs = Object.values(docs_json)\n",
" if (!docs) {\n",
" return\n",
" }\n",
" const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",
" const is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1\n",
" function embed_document(root) {\n",
" var Bokeh = get_bokeh(root)\n",
" Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
" for (const render_item of render_items) {\n",
" for (const root_id of render_item.root_ids) {\n",
"\tconst id_el = document.getElementById(root_id)\n",
"\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",
"\t const root_el = id_el.children[0]\n",
"\t root_el.id = root_el.id + '-rendered'\n",
"\t}\n",
" }\n",
" }\n",
" }\n",
" function get_bokeh(root) {\n",
" if (root.Bokeh === undefined) {\n",
" return null\n",
" } else if (root.Bokeh.version !== py_version && !is_dev) {\n",
" if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
"\treturn null\n",
" }\n",
" return root.Bokeh.versions.get(py_version);\n",
" } else if (root.Bokeh.version === py_version) {\n",
" return root.Bokeh\n",
" }\n",
" return null\n",
" }\n",
" function is_loaded(root) {\n",
" var Bokeh = get_bokeh(root)\n",
" return (Bokeh != null && Bokeh.Panel !== undefined)\n",
" }\n",
" if (is_loaded(root)) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (is_loaded(root)) {\n",
" clearInterval(timer);\n",
" embed_document(root);\n",
" } else if (document.readyState == \"complete\") {\n",
" attempts++;\n",
" if (attempts > 200) {\n",
" clearInterval(timer);\n",
"\t var Bokeh = get_bokeh(root)\n",
"\t if (Bokeh == null || Bokeh.Panel == null) {\n",
" console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
"\t } else {\n",
"\t console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
"\t embed_document(root)\n",
"\t }\n",
" }\n",
" }\n",
" }, 25, root)\n",
" }\n",
"})(window);</script>"
],
"text/plain": [
":NdOverlay [ticker]\n",
" :Curve [date] (return)"
]
},
"execution_count": 38,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "p1892"
}
},
"output_type": "execute_result"
}
],
"source": [
"calculated_p_stock.hvplot(x='date',y='return', title='Portfolio Return', by='ticker').opts(yformatter='%.2f')"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(datetime.datetime(2021, 12, 31, 0, 0, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), datetime.datetime(2023, 8, 14, 17, 40, 56, 432401, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), datetime.timedelta(days=1))\n"
]
}
],
"source": [
"## load benchmark portoflio profile\n",
"# load data\n",
"from sqlalchemy import create_engine, text\n",
"from utils import convert_string_to_datetime, time_in_beijing\n",
"\n",
"\n",
"# a list of table and delta time as frequency\n",
"def need_to_update(table_name='benchmark_profile', freq=timedelta(days=1)):\n",
" with create_engine(db_url).connect() as conn:\n",
" max_date = conn.execute(text(f\"SELECT MAX(date) FROM {table_name}\")).fetchone()[0]\n",
" max_date = convert_string_to_datetime(max_date)\n",
" current_time = time_in_beijing()\n",
" # if max_date - current time > delta time, return (start_date, end_date, freq)\n",
" if current_time - max_date > freq:\n",
" return (max_date, current_time, freq)\n",
" else:\n",
" return None\n",
"\n",
"print(need_to_update())\n",
"\n",
"# else return None\n",
"\n",
"# with create_engine(db_url).connect() as conn:\n",
"# max_date = conn.execute(text('SELECT MAX(date) FROM benchmark_profile')).fetchone()[0]\n",
"# # convert max_date to datetime with shanghai time zon\n",
"# max_date = convert_string_to_datetime(max_date)\n",
"# print(max_date)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"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>index</th>\n",
" <th>date</th>\n",
" <th>weight</th>\n",
" <th>display_name</th>\n",
" <th>ticker</th>\n",
" <th>sector</th>\n",
" <th>aggregate_sector</th>\n",
" <th>name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>26500</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.530</td>\n",
" <td>中国宝安</td>\n",
" <td>000009.XSHE</td>\n",
" <td>电气设备I 电池II 电池化学品III 综合 工业集团企业 工业</td>\n",
" <td>工业</td>\n",
" <td>ZGBA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>26501</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.194</td>\n",
" <td>南玻A</td>\n",
" <td>000012.XSHE</td>\n",
" <td>建筑材料I 玻璃制造II 玻璃制造III 非金属矿物制品业 玻璃 原材料</td>\n",
" <td>原料与能源</td>\n",
" <td>NBA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>26502</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.211</td>\n",
" <td>深科技</td>\n",
" <td>000021.XSHE</td>\n",
" <td>电子I 电子制造II 消费电子零部件及组装III 计算机、通信和其他电子设备制造业 安防设备...</td>\n",
" <td>信息与通信</td>\n",
" <td>SKJ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>26503</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.055</td>\n",
" <td>招商港口</td>\n",
" <td>001872.XSHE</td>\n",
" <td>交通运输I 航运港口II 港口III 水上运输业 港口 工业</td>\n",
" <td>工业</td>\n",
" <td>ZSGK</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>26504</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.219</td>\n",
" <td>深圳能源</td>\n",
" <td>000027.XSHE</td>\n",
" <td>公用事业I 电力II 火电III 电力、热力生产和供应业 火电 公用事业</td>\n",
" <td>公用事业</td>\n",
" <td>SZNY</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",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>495</th>\n",
" <td>26995</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.328</td>\n",
" <td>凯赛生物</td>\n",
" <td>688065.XSHG</td>\n",
" <td>化工I 化学制品II 其他化学制品III 化学纤维制造业 其他化学原料 原材料</td>\n",
" <td>原料与能源</td>\n",
" <td>KSSW</td>\n",
" </tr>\n",
" <tr>\n",
" <th>496</th>\n",
" <td>26996</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.118</td>\n",
" <td>财达证券</td>\n",
" <td>600906.XSHG</td>\n",
" <td>非银金融I 证券II 证券III 资本市场服务 证券公司 金融</td>\n",
" <td>金融与地产</td>\n",
" <td>CDZQ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>497</th>\n",
" <td>26997</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.101</td>\n",
" <td>圣湘生物</td>\n",
" <td>688289.XSHG</td>\n",
" <td>医药生物I 医疗器械II 体外诊断III 医药制造业 体外诊断 医药卫生</td>\n",
" <td>医药卫生</td>\n",
" <td>SXSW</td>\n",
" </tr>\n",
" <tr>\n",
" <th>498</th>\n",
" <td>26998</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.089</td>\n",
" <td>南网能源</td>\n",
" <td>003035.XSHE</td>\n",
" <td>公用事业I 电力II 电能综合服务III 科技推广和应用服务业 节能与资源回收 工业</td>\n",
" <td>公用事业</td>\n",
" <td>NWNY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>499</th>\n",
" <td>26999</td>\n",
" <td>2021-12-31</td>\n",
" <td>0.350</td>\n",
" <td>思瑞浦</td>\n",
" <td>688536.XSHG</td>\n",
" <td>电子I 半导体II 模拟芯片设计III 软件和信息技术服务业 集成电路设计 信息技术</td>\n",
" <td>信息与通信</td>\n",
" <td>SRP</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>500 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" index date weight display_name ticker \\\n",
"0 26500 2021-12-31 0.530 中国宝安 000009.XSHE \n",
"1 26501 2021-12-31 0.194 南玻A 000012.XSHE \n",
"2 26502 2021-12-31 0.211 深科技 000021.XSHE \n",
"3 26503 2021-12-31 0.055 招商港口 001872.XSHE \n",
"4 26504 2021-12-31 0.219 深圳能源 000027.XSHE \n",
".. ... ... ... ... ... \n",
"495 26995 2021-12-31 0.328 凯赛生物 688065.XSHG \n",
"496 26996 2021-12-31 0.118 财达证券 600906.XSHG \n",
"497 26997 2021-12-31 0.101 圣湘生物 688289.XSHG \n",
"498 26998 2021-12-31 0.089 南网能源 003035.XSHE \n",
"499 26999 2021-12-31 0.350 思瑞浦 688536.XSHG \n",
"\n",
" sector aggregate_sector name \n",
"0 电气设备I 电池II 电池化学品III 综合 工业集团企业 工业 工业 ZGBA \n",
"1 建筑材料I 玻璃制造II 玻璃制造III 非金属矿物制品业 玻璃 原材料 原料与能源 NBA \n",
"2 电子I 电子制造II 消费电子零部件及组装III 计算机、通信和其他电子设备制造业 安防设备... 信息与通信 SKJ \n",
"3 交通运输I 航运港口II 港口III 水上运输业 港口 工业 工业 ZSGK \n",
"4 公用事业I 电力II 火电III 电力、热力生产和供应业 火电 公用事业 公用事业 SZNY \n",
".. ... ... ... \n",
"495 化工I 化学制品II 其他化学制品III 化学纤维制造业 其他化学原料 原材料 原料与能源 KSSW \n",
"496 非银金融I 证券II 证券III 资本市场服务 证券公司 金融 金融与地产 CDZQ \n",
"497 医药生物I 医疗器械II 体外诊断III 医药制造业 体外诊断 医药卫生 医药卫生 SXSW \n",
"498 公用事业I 电力II 电能综合服务III 科技推广和应用服务业 节能与资源回收 工业 公用事业 NWNY \n",
"499 电子I 半导体II 模拟芯片设计III 软件和信息技术服务业 集成电路设计 信息技术 信息与通信 SRP \n",
"\n",
"[500 rows x 8 columns]"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_most_recent_profile('benchmark')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"auth success \n"
]
}
],
"source": [
"## request all stock info\n",
"df = api.get_all_stocks_detail()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['display_name', 'name', 'start_date', 'end_date', 'type', 'ticker',\n",
" 'sector', 'aggregate_sector'],\n",
" dtype='object')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.columns"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"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>display_name</th>\n",
" <th>name</th>\n",
" <th>start_date</th>\n",
" <th>end_date</th>\n",
" <th>type</th>\n",
" <th>ticker</th>\n",
" <th>sector</th>\n",
" <th>aggregate_sector</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>平安银行</td>\n",
" <td>PAYH</td>\n",
" <td>1991-04-03</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>000001.XSHE</td>\n",
" <td>银行I 股份制银行II 股份制银行III 货币金融服务 综合性银行 金融</td>\n",
" <td>金融与地产</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>万科A</td>\n",
" <td>WKA</td>\n",
" <td>1991-01-29</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>000002.XSHE</td>\n",
" <td>房地产I 房地产开发II 房地产开发III 房地产业 房地产开发 房地产</td>\n",
" <td>金融与地产</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>国华网安</td>\n",
" <td>GHWA</td>\n",
" <td>1990-12-01</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>000004.XSHE</td>\n",
" <td>计算机I 软件开发II 横向通用软件III 软件和信息技术服务业 通用软件 信息技术</td>\n",
" <td>信息与通信</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>ST星源</td>\n",
" <td>STXY</td>\n",
" <td>1990-12-10</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>000005.XSHE</td>\n",
" <td>环保I 环境治理II 综合环境治理III 生态保护和环境治理业 污水处理 工业</td>\n",
" <td>公用事业</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>深振业A</td>\n",
" <td>SZYA</td>\n",
" <td>1992-04-27</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>000006.XSHE</td>\n",
" <td>房地产I 房地产开发II 房地产开发III 房地产业 房地产开发 房地产</td>\n",
" <td>金融与地产</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",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5243</th>\n",
" <td>华纳药厂</td>\n",
" <td>HNYC</td>\n",
" <td>2021-07-13</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>688799.XSHG</td>\n",
" <td>医药生物I 化学制药II 化学制剂III 医药制造业 药品制剂 医药卫生</td>\n",
" <td>医药卫生</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5244</th>\n",
" <td>瑞可达</td>\n",
" <td>RKD</td>\n",
" <td>2021-07-22</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>688800.XSHG</td>\n",
" <td>电子I 其他电子II 其他电子III 计算机、通信和其他电子设备制造业 汽车电子 可选消费</td>\n",
" <td>信息与通信</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5245</th>\n",
" <td>天能股份</td>\n",
" <td>TNGF</td>\n",
" <td>2021-01-18</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>688819.XSHG</td>\n",
" <td>电气设备I 电池II 蓄电池及其他电池III 电气机械和器材制造业 电池 工业</td>\n",
" <td>工业</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5246</th>\n",
" <td>中芯国际</td>\n",
" <td>ZXGJ</td>\n",
" <td>2020-07-16</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>688981.XSHG</td>\n",
" <td>电子I 半导体II 集成电路制造III 计算机、通信和其他电子设备制造业 集成电路制造 信息技术</td>\n",
" <td>信息与通信</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5247</th>\n",
" <td>九号公司</td>\n",
" <td>JHGS</td>\n",
" <td>2020-10-29</td>\n",
" <td>2200-01-01</td>\n",
" <td>stock</td>\n",
" <td>689009.XSHG</td>\n",
" <td>汽车I 其他交运设备II 其他交运设备III 计算机、通信和其他电子设备制造业 休闲设备与用...</td>\n",
" <td>消费</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5248 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" display_name name start_date end_date type ticker \\\n",
"0 平安银行 PAYH 1991-04-03 2200-01-01 stock 000001.XSHE \n",
"1 万科A WKA 1991-01-29 2200-01-01 stock 000002.XSHE \n",
"2 国华网安 GHWA 1990-12-01 2200-01-01 stock 000004.XSHE \n",
"3 ST星源 STXY 1990-12-10 2200-01-01 stock 000005.XSHE \n",
"4 深振业A SZYA 1992-04-27 2200-01-01 stock 000006.XSHE \n",
"... ... ... ... ... ... ... \n",
"5243 华纳药厂 HNYC 2021-07-13 2200-01-01 stock 688799.XSHG \n",
"5244 瑞可达 RKD 2021-07-22 2200-01-01 stock 688800.XSHG \n",
"5245 天能股份 TNGF 2021-01-18 2200-01-01 stock 688819.XSHG \n",
"5246 中芯国际 ZXGJ 2020-07-16 2200-01-01 stock 688981.XSHG \n",
"5247 九号公司 JHGS 2020-10-29 2200-01-01 stock 689009.XSHG \n",
"\n",
" sector aggregate_sector \n",
"0 银行I 股份制银行II 股份制银行III 货币金融服务 综合性银行 金融 金融与地产 \n",
"1 房地产I 房地产开发II 房地产开发III 房地产业 房地产开发 房地产 金融与地产 \n",
"2 计算机I 软件开发II 横向通用软件III 软件和信息技术服务业 通用软件 信息技术 信息与通信 \n",
"3 环保I 环境治理II 综合环境治理III 生态保护和环境治理业 污水处理 工业 公用事业 \n",
"4 房地产I 房地产开发II 房地产开发III 房地产业 房地产开发 房地产 金融与地产 \n",
"... ... ... \n",
"5243 医药生物I 化学制药II 化学制剂III 医药制造业 药品制剂 医药卫生 医药卫生 \n",
"5244 电子I 其他电子II 其他电子III 计算机、通信和其他电子设备制造业 汽车电子 可选消费 信息与通信 \n",
"5245 电气设备I 电池II 蓄电池及其他电池III 电气机械和器材制造业 电池 工业 工业 \n",
"5246 电子I 半导体II 集成电路制造III 计算机、通信和其他电子设备制造业 集成电路制造 信息技术 信息与通信 \n",
"5247 汽车I 其他交运设备II 其他交运设备III 计算机、通信和其他电子设备制造业 休闲设备与用... 消费 \n",
"\n",
"[5248 rows x 8 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"detail_df"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "portfolio_risk_assesment",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.4"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
|