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\":\"AAAAAAAA+H/Ahw9+zJmmv+BVVIYa15K/ANAV786EZD+YyqFWisS3v8CJ48Dr57i/mM0QdlUmt79s7W2RZP/Av5AiCNW2YKW/4MeBZKAoq7+QFp3JIR27v4BlQS8I87e/4KIai9jhrr8AunQp+C1QvwBwJpwFxoO/qCaVuOSaur9QPGM29em6v7CPn2RF/MO/OOFtL4i2xb+0zqJzkPvGv8DewwLPArm/yGupV26Ht7+EdrDoBBXEv5y4lyleGsO/ZAnnDmfRwL+g5XT/gNO6v1B11nIjO7+/qBiIp2fmxr/QBWC+F5DHv6QZJLW3Ice/aOycaRS6zL/MdW9KuPbPv0RjHXQon86/TCzpKGwB0b8sOQA1cLjKvyD/P3/CD8W/wCr3R2luxr8ALcpVzzjKv8QG9JET8sm/bGCW76bvzL9gPCqaRlPQv8yRgFjJK8u/0FhBJtzkyr88ai0sUNHIv0yCnph8/c6/SAmcaTWfz7+sACHmtX/FvzR2QkxMOMW/nEG1+/U5z790oj4/KqrOv1gKjcDy+dO/jNX04F381r90e8Dpr6jSv5Chq8PajM+/9uICh4aU0L/IckBtteTPv2bKq6pjStC/vCvQZGiPzL+w8zh8ganLv5S1Fiw/XMm/QFrC4je1yL8Ahh8acSfJv3CGAYAIHcm/ABwzADhNz7888ynnyXvOv6yOItt2ssi/sLxXEQ5jxr9Qckor5FPIv1AxPpFJ2bq/mKoL8eaZs7/Y8PdreAmyvxCn9RRMnai/IDg4EEv7mr9gBn8iExehv0Ba7Hh5n5G/gLBQXs5tiT+AbLz/Un2FP4CudaYn0q8/gKy+r/PemD9AG2kGuRCRvwCQi+sfRG8/AGmXTnCIar8AnhrjnHt2P6BtXEMwlJi/gAic7shsdr8AN7rInGS5PxA8gnhkJMI/2HMNxRkayj/Ycw3FGRrKP7g+koro7M0/WGolu2rEzD+otuTuC8/MP0j/vX5er8k/rKyIZ2ud0T9gRBJ1w3rZP/CrYcA+8t8/bO0382kc3D9MNgUPddPcP4T2bg7lgN8/0gxKpoRV4j8qUob4vmDhP8Tc3cZVFeA/BAQ3/5zv3z+QKW0FmwPkP3B+1sy0JeM/fqkKtz2S4j8c51OF+YTbPwx0CZ/NP94/ppit0EUV5D8AheNBxfzjP85PeTlsc+c/Bvh/J3Cc5z8WZ5lzd87lP3S3ChxU8OY/dLcKHFTw5j9OXVHvHPnnP0jTjqJzzec/0vG3Sbhr5T+IrD20vuvkP77iZM1EQ+Y/ygVIcKpk5T+mqZPeaMnnP/AFXgT6VuY/trTU5jcP7D/cuZwoLGjrP2jtIH1c+u0/MJ2yNCuv6D/wBcfIoEPoP3BWHTJYneQ/eCFIVl6y4T+q1x4OdJnjP4Bv7qDXd+Y/UKT6oXwX5z825Mq+4/rnP/470Kks+uY/ThUw2DIl4z8wBbcAjjDmP4YS2IbzIug/cIxCj1Qu5j+WLVOQdkfqP/robOrcyOg/wBRZ0pTD7j9E602AarTwP0bCw2LdZvE/CsvqJ8XB8T+Mq1OVXfrvP2w9M357c/A/7vSdwWtt8T+OJZfpEnXwPwoTkRZpCe4/gr+5W6vC7T+motjT13HvP8CqrQaI/vE/FFKyjYx88j/8g4dBFeLyP06Etp9EjfY/unMi9CkT9j/OLLzk4CH1P/KRPBJAIvY/2jGS2u5J9T9W4H96hFL1P/wRA1SIVvM/gAMHJr3M9D9+Fh2CwZ3yPyyysa5e6PM/mu91bedF9z/oFmrerS32P+69m3q7//Y/pLGvlm2F9z9IJaKYAx73Pyp5oWGUEPk/FhBmsjyJ+T8yxHgGujX5P1x3gEt5+fo/ELyWsoAG+z/6jcDjokf4P2SK2rybuPk/OKkq2TEG+T8YSGtFEw73P67HidOwgPY/UrrgndiM+j8SngLtpsb2P+RJzwqItvY/9saI5f4Y9T8wZ6GnSYP1P8Ao4neASPQ/wHYyPBIV9j88hEkUGvz1P6iAi/02Jfc/iDK2mdzM9z9suDLxFof2P366xM9Vh/U/cMdM5mBa+T/q3f82vnj6P2wzNVrCGv4/JnOoBbVp/j/igdt5E+r+P9JMKC2Mpfs/IKwNs1pb+z/K//+72Sz6P+gutFlsz/k/tr3ifjQ7+j+ccjifahH8PwAvtiqtwvs/LBPkz/rB+T/mZrFQin35P1CgV9s3Yfk/HKL0CQey9j9yJBk20cz1P0wLLMvuUvY/7KzCRKXw9T+umBRI+Jz0P1QooxVjxvY/MtQrifwy9z8qb06DFbD1PxKyDa2t0vU/UCxVzxCK9j8WPTlwF2D3PwjJUcvP2fY/SB6Yuo5G9z/Ukr9Dvvj2Px5UQnW0iPY/ZKKKMN3h9T/mCJMsqSP0P/QUCP/o2PU/Eul9KJvN9D/Y1SA9h2j1P+4i3coq9/M/BlAmZMoK9D9k54fvMMTzPxLfIgbIBvQ/Rm9d/eg+8z84S08lSibyP1obkILxaPI/LN1JeY6o8j8q53L0AwryP7Jy3+CRuPA/PiegF3qp8D9Sjs89DyfyP2ohjpafLvI/srx+fny28T+YnMfwYjjxPxBHEEhHS/A/FDEvkFrQ7D8snh0shd/sP+I0fkLXQO0/Uo4kP4oX7D8=\"},\"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\":\"AAAAAAAA+H/g9oVKk9yWv0CsM4iVKIC/AG0JaDpQZb9Qk550kSi6PzgziAObx8I/0HDj2NC7uT9gzYi4dVm+P0AjBDS1HMc/vNfMAVp/0z984PODyQXZP8Bm83eLi9w/kCzbewyB2j/EI2nSOZLaP9zFDd09d9c/VF0ng1Lk1z+AhSNGUlPYP0zif5qQ19M/9A+5mCPE0j+ccSBBgtHTP/BfYaICPNU/uLwnsii+1D9Ah7DruhbRPxiPq/2EsdA/zHvJwfu40j+QDidJvhnRP8Dn6nQ3e9I/PA7b0znu0z+oGmJMWeHHP7gBMiSO5MI/MD6zhxJ9wD8gkR/FXl22P3ANcqNV+7Q/IMBZhM5YqD/gEwq/UfKqPyBQegeVTqU/UNzGFftEsj+Aq/2i5Nl4v4C9M0PTSJI/YL1rNoiaor/g2lA6/hqzv7DRa9l0Aq6/cKdYuPtipL+QWSYQIKGkv3gCAvpdN7S/aKd12XWusb/gtY2F3Ayjv/AUQpvu7Ka/AHu7VIe0rr9g8YxTXCqTvxAZNFHZUaa/ELRLKdI/rL9A4rNr0hmtv4AYoWkV9aC/4DPvGU7GoL8AZCMhYoGIv4CxR8nGF4E/wI8DAejwpj9ALoFPuci1P0D0+iDL07s/AL2vPN06pT8wb6QzOs20P0DrJM/ssao/AEgY9pl0Qb+g5xZm9q+hP/C7F9HnfbY/QJutMS5Tuj8A020OQwC4P1iMpwEDecU/oBF5xYvfxT8gX8NrbOfFPxjgb18xt8w/gJ6dWj5Kyz+wBuyeEcLHP2iRll/N3so/XOXYxskt0D/wczLp93LQP3B72pe//c8/aDfHIdv1zz946tGpgZzIPyC+Yyh6bsk/uHjVt2AQxD84C2UzOYLGP+Apo/xhZMQ/wH4GWR2WxT9Y3C3pq9TLP3BgKoFroNE/dMSljgmH0D/U0zEpVpjTP+Drw0GbFdQ/9EnjkMy41D/Qr9FLfeDUP1yvMKiiA9I/bGGeFhWK0z9krJdGeV7TP7zQ2OJXVNU/hHp8PXeT0j/US2DoR1DRP/gDtpnoGM8/+C1bKn8P0T/Qu+arhiXSP0irMH4UpM8/kDl6nqpF0D/0FXVqdy7SPzST1kDNUtM/KGCG8fl2zj94YqBJ2R7GPxiybdAo2so/QJUIsj+Nzz9swn+NlbXRPwQIpEonOtE/oJb3ifO00j/M/uVCUlXTP3DpbJObb9A/PJWYoxfC0T98920nozjRP2R9voTjQtU/4JxuWdDx1z/Ic2m+zkPVP7j9Y4lKJdY/qIM+dANq2T/4gN1qo+jZP+BKGaEnRN0/5G15JmGE3D+82fu+uTvbPzC/dyF7BN4/gEHWYZsS1T9Eq07xifLRP8R3Plzmu9A/FOBIQASp1j/4USTk5Z7WP0ziElGqK9o/3PeyJAtI2j8wCMmttYTYPxT0VNYH/dY/UDnXBSTu0j9kuDuaSfjSP5RKq1JNdNE/RIuAN0WU0D8k021hlMjUP4CkAPT7Zdg/IL/16R+H1j+ce1G/LPfVP2TIxrgaHdM/VG1zkuOd0T+ke6jlbhrSP7BBTh+PCs8/rD+el5bc0T/wFopCwQfOPzjz7fh7TcI/0Kkna73Rvz8grRke+OS1P3AyCvntlcI/WJk79bB8wD/4bAE2QWrDP6DUQB21o8M/wFE3R7MWxD+wtoc23xm+P8isKX53wsA/EPwUBRimuz8QX6I0aQy4P0BPZUrmRbg/oOqrbbevrj8gyEJHTCCgP6DVi2NeBLU/gGtpN7biqj8ATrJs+/mZP0C+jlV755E/QI1h0u/DnD8A6EVTsSaMP8DRaaxDEKQ/ANDfVS6fhD/Ak/jWr9GkvyDFDnwVxJa/wNAaSL/gir8AaDtZmtRRv+AKFLLdP5K/wBveDVRVj78AhPl4xmFLvwDO6BzcIXs/IPgNmyXLqT9wQv/sZbexP0CvtqFzIcA/8AKc9FAvuj+gD69OUee7P8iSngy37MA/MEY4IE90xz8YZvkAQ/bAP4j38XRefcg/mLBn3ulwyD8IRTO/ysDLP3h4/ICQ1cs/GPsETFJRzT8APcy6NMXPPwjfsOC0I9I/xLzj0sRO1T/IloOxLWfWP3xtUTeBbdk/gEGbYoGi2D8YsXLfuFfYPwRkaf4HiNo/VMLvwGkm2j9wbuOVbh/bP5wtJzOHaNw/fGV/+IO92j/wnRBp3nbZP5Tq1dAuS9k/CHdVBlFG2D9omLA1gkPXP6jMbJemVdo/cEXwW6vN2z9eofq3BrviP7B/viJOEOg/YKQvxqvo5j9S62GUZAvmPyod5i6YbeY/rM+pMSKh5D8eZIXndirqP8oE21Vz7+g/ZoXZaWCL5j+EKodcrK/qPwy5TiF0AOo/av7dgkqc6j8EmzNEIlDmP4AZrTsgK+c/2qpDUbe75j9aQk3vM2fnP/5hGYdyUug/rDNEEGOe6T8U0BgkbkrpP3R9Aa2TmOo/9Hg5wFfc6D9kMdFO2DDpP+BG4prPM+8/Dt/ILomi8D/uI0JXDIrxP0jrGmjFzfA/DCp0URTw7D++GIX+dAPtP1SMNijUKOs/VGgduecp6z8YnkPzQPXqP+hZMa90euc/vgCROmFv5j/q+qQ8narpP8CKzHjD1ec/OL6zKO6D6j8=\"},\"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
}