File size: 168,361 Bytes
79b7f93
 
 
 
 
 
8d23cb2
 
 
 
79b7f93
1ce8035
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
 
 
 
8d23cb2
 
 
 
79b7f93
 
 
8d23cb2
 
 
79b7f93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8d23cb2
79b7f93
 
 
 
 
8d23cb2
 
 
 
79b7f93
 
 
8d23cb2
 
 
 
 
79b7f93
 
 
 
 
 
 
 
8d23cb2
79b7f93
 
 
8d23cb2
 
 
 
 
79b7f93
 
 
 
 
 
 
 
 
8d23cb2
 
 
 
79b7f93
 
 
 
 
8d23cb2
 
 
 
79b7f93
 
 
1ce8035
79b7f93
 
 
 
 
8d23cb2
79b7f93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
 
 
 
 
 
8d23cb2
 
 
 
79b7f93
 
 
1ce8035
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8d23cb2
 
 
 
79b7f93
 
 
 
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
8d23cb2
 
 
 
 
79b7f93
8d23cb2
79b7f93
 
 
 
8d23cb2
 
 
 
 
79b7f93
8d23cb2
 
 
 
79b7f93
8d23cb2
 
 
 
79b7f93
8d23cb2
 
 
 
 
79b7f93
8d23cb2
79b7f93
8d23cb2
 
 
 
 
 
 
 
79b7f93
8d23cb2
 
 
79b7f93
8d23cb2
 
 
 
 
 
 
 
 
 
 
79b7f93
8d23cb2
79b7f93
8d23cb2
 
 
 
79b7f93
8d23cb2
 
 
 
 
 
 
 
 
 
 
1ce8035
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1ce8035
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1ce8035
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
8d23cb2
 
79b7f93
8d23cb2
 
 
 
79b7f93
8d23cb2
 
 
 
79b7f93
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
79b7f93
8d23cb2
 
79b7f93
8d23cb2
 
79b7f93
8d23cb2
79b7f93
8d23cb2
 
79b7f93
 
 
 
8d23cb2
79b7f93
8d23cb2
 
79b7f93
1ce8035
79b7f93
 
 
 
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
 
 
 
 
 
 
8d23cb2
79b7f93
 
 
8d23cb2
79b7f93
 
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
8d23cb2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79b7f93
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
{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9ffJJeNSfHdC"
      },
      "source": [
        "# Stock Portfolio Recommdendations"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Author: Anand Siva P V\n",
        "### [HF Repository](https://huggingface.co/spaces/pvanand/portfolio/tree/main)\n",
        "### [App Link (HF)](https://huggingface.co/spaces/pvanand/portfolio)\n",
        "\n",
        "Contact: \\\n",
        "*   Email : [email protected]\n",
        "*   LinkedIn: https://www.linkedin.com/in/anandsivapv/ \\\n",
        "*   Github: https://github.com/pvanand07\n",
        "\n",
        "\n"
      ],
      "metadata": {
        "id": "6aM6suLNytvb"
      }
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6Wj_SfmcfQ8X"
      },
      "source": [
        "## Objective"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "9rxdV2OafTqV"
      },
      "source": [
        "### Creating a portfolio out of Nifty50 Stocks\n",
        "The NIFTY 50 is a benchmark Indian stock market index that represents the weighted average of 50\n",
        "of the largest Indian companies listed on the National Stock Exchange.\n",
        "Objectives:\n",
        "1. Create an active stock selection strategy. (Main Objective)\n",
        "2. Compare the performance of the strategy with a benchmark.\n",
        "3. Summarize the performance of active strategy and compare it with benchmark.\n",
        "4. Create and host an app to present the above.\n",
        "Use your OOP (Object Oriented Programming) skills to complete the task. Each functionality\n",
        "explained above except hosting an app should be the part of your main class.\n",
        "Start by creating a class Stock and historical prices of each stock should be class properties. When\n",
        "you instantiate a class it should download the historical prices and compute necessary properties.\n",
        "Method of this class should be:\n",
        "1. CurPrice(curDate) – Which gives the closing price of the date curDate.\n",
        "2. NDayRet(N,curDate) – Which gives the N-day returns as on the curDate. (N=5 will give 5-day\n",
        "return)\n",
        "3. DailyRet(curDate) - Which gives the daily returns on curDate.\n",
        "4. Last30daysPrice(curDate) – Which gives the array of last 30 days prices.\n",
        "1. Benchmark Strategy:\n",
        "Our Benchmark is going to be Nifty50 index itself. Compare your active stock selection strategy.\n",
        "2. Active stock selection strategy:\n",
        "Your task involves creating an investment strategy where, at the end of each month, the\n",
        "performance of each stock in the previous month is assessed. The criterion for selection is\n",
        "positive returns. For instance, on March 31st of a given year, the 30-day returns of all fifty\n",
        "stocks will be examined, and only those with positive returns will be included in the portfolio.\n",
        "This portfolio will be maintained until April 30th, when a revaluation will occur based on the\n",
        "same rule for the upcoming month. This process will be repeated monthly.\n",
        "3. Summarize the performance:\n",
        "Get the following performance metrics for Nifty Index, Benchmark Allocation & Sample Strategy\n",
        "a. CAGR (%): ((𝑉𝑓𝑖𝑛𝑎𝑙\n",
        "𝑉𝑏𝑒𝑔𝑖𝑛\n",
        ")\n",
        "1\n",
        "𝑡\n",
        "− 1) ∗ 100 ;\n",
        "𝑉𝑓𝑖𝑛𝑎𝑙 : 𝑉𝑎𝑙𝑢𝑒 𝑜𝑛 𝑓𝑖𝑛𝑎𝑙 𝑑𝑎𝑦, 𝑉𝑏𝑒𝑔𝑖𝑛: 𝑉𝑎𝑙𝑢𝑒 𝑜𝑛 𝑏𝑒𝑔𝑖𝑛𝑖𝑛𝑔 𝑑𝑎𝑦, 𝑡: 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑦𝑒𝑎𝑟𝑠\n",
        "b. Volatility (%): (√252 ∗ (𝑠𝑡𝑎𝑛𝑑𝑎𝑟𝑑 𝑑𝑒𝑣𝑖𝑎𝑡𝑖𝑜𝑛(𝑑𝑎𝑖𝑙𝑦 𝑟𝑒𝑡𝑢𝑟𝑛𝑠)) ∗ 100\n",
        "c. Sharpe Ratio: (√252 ∗ 𝑚𝑒𝑎𝑛 (𝑑𝑎𝑖𝑙𝑦 𝑟𝑒𝑡𝑢𝑟𝑛𝑠)\n",
        "𝑆𝑡𝑎𝑛𝑑𝑎𝑟𝑑 𝑑𝑒𝑣𝑖𝑎𝑡𝑖𝑜𝑛(𝑑𝑎𝑖𝑙𝑦 𝑟𝑒𝑡𝑢𝑟𝑛𝑠))\n",
        "𝑑𝑎𝑖𝑙𝑦 𝑟𝑒𝑡𝑢𝑟𝑛𝑠: ( 𝑉𝑡\n",
        "𝑉𝑡−1\n",
        "− 1) ; 𝑉𝑡: 𝑉𝑎𝑙𝑢𝑒 𝑜𝑛 𝑑𝑎𝑦 (𝑡), 𝑉𝑡−1: 𝑉𝑎𝑙𝑢𝑒 𝑜𝑛 𝑑𝑎𝑦 (𝑡 − 1)\n",
        "4. App to host the performance:\n",
        "Create & Host an app to which will have the following features.\n",
        "Need to take the following as inputs:\n",
        "1. Start date and end date of simulation\n",
        "2. Number of days to measure the performance for stock selection required for the sample\n",
        "strategy. ( We have described it to use 30 days returns but it can be generalized to have N\n",
        "days returns.)\n",
        "3. Initial Equity\n",
        "Need to display the following:\n",
        "1. Equity Curves of Nifty index, benchmark, and the Sample strategy for the given period in a\n",
        "single plot.\n",
        "2. Stocks that are selected for the sample strategy.\n",
        "3. Performance metrics for all the 3 stocks"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ZBlMdCgqe9du"
      },
      "source": [
        "## 1. Obtaining Nifty50 ticker list from wikipedia"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "ggMOJKumgDuC"
      },
      "outputs": [],
      "source": [
        "# Defining Imports\n",
        "import pandas as pd\n",
        "import yfinance as yf\n",
        "import sqlite3\n",
        "import yfinance as yf\n",
        "import matplotlib.pyplot as plt\n",
        "from datetime import datetime"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "hKSKF4bOsfCI"
      },
      "outputs": [],
      "source": [
        "nifty_50_symbols = pd.read_csv(\"https://huggingface.co/spaces/pvanand/portfolio/raw/main/nifty50-stock-tickers.csv\").Symbol.to_list()\n",
        "nifty_50_symbols"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8HjqVdFKg3vE"
      },
      "source": [
        "# 2. Fetching data from Yahoo Finance and storing it in a SQLite database"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "z3_X7wI9hDR4"
      },
      "source": [
        "This step helps in faster retrieval of data when further analysis is required Also by using SQLite, only required data (specific date range) is loaded into memmory."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "J-Oq7cCp2s33",
        "outputId": "436e518a-69bd-48d9-97bf-e600d6401755"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n",
            "[*********************100%%**********************]  1 of 1 completed\n"
          ]
        }
      ],
      "source": [
        "# Function to fetch data from Yahoo Finance\n",
        "def fetch_data(symbols, start_date, end_date):\n",
        "    for symbol in symbols:\n",
        "        data = yf.download(symbol+'.NS', start=start_date, end=end_date)\n",
        "        data.to_sql(symbol, conn, if_exists='replace', index=True)\n",
        "\n",
        "# Create a SQLite database\n",
        "conn = sqlite3.connect('nifty50_stock_data.db')\n",
        "\n",
        "# Example: Fetching data for some symbols\n",
        "symbols = nifty_50_symbols  # Add more symbols as needed\n",
        "fetch_data(symbols, '2000-01-01', pd.to_datetime('today').strftime('%Y-%m-%d'))\n",
        "# last updated on 2024-01-08\n",
        "conn.close()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LBreo5HmiqAG"
      },
      "source": [
        "Storing nifty50 index data in the same database"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "I4wxRYq8KAB3",
        "outputId": "52f2861f-33bb-4b32-9187-432ad85195d6"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\r[*********************100%%**********************]  1 of 1 completed\n"
          ]
        }
      ],
      "source": [
        "import yfinance as yf\n",
        "import sqlite3\n",
        "import pandas as pd\n",
        "\n",
        "def fetch_data(start_date, end_date):\n",
        "  data = yf.download('^NSEI', start=start_date, end=end_date)\n",
        "  data.to_sql(\"NIFTY50\", conn, if_exists='replace', index=True)\n",
        "\n",
        "# Create a SQLite database\n",
        "conn = sqlite3.connect('/content/nifty50_stock_data.db')\n",
        "\n",
        "fetch_data('2000-01-01', pd.to_datetime('today').strftime('%Y-%m-%d'))\n",
        "# last updated on 2024-01-07\n",
        "conn.close()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xRlQXAWIjYYb"
      },
      "source": [
        "## 3. Selecting stocks and building a strategy"
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "import sqlite3\n",
        "from datetime import datetime\n",
        "# import gradio as gr\n",
        "\n",
        "# Initialization\n",
        "start_date = '2010-01-01'\n",
        "end_date = '2024-01-01'\n",
        "investment_amount = 10000\n",
        "\n",
        "# Main Execution\n",
        "db_path = 'nifty50_stock_data.db'\n",
        "nifty_50_symbols = pd.read_csv(\"https://huggingface.co/spaces/pvanand/portfolio/raw/main/nifty50-stock-tickers.csv\").Symbol.to_list()\n",
        "\n",
        "\n",
        "\n",
        "class Stock:\n",
        "    def __init__(self, symbol, db_path, start_date, end_date):\n",
        "        self.symbol = symbol\n",
        "        self.db_path = db_path\n",
        "        self.start_date = start_date\n",
        "        self.end_date = end_date\n",
        "        self.prices = self._download_prices()\n",
        "\n",
        "    def _download_prices(self):\n",
        "        conn = sqlite3.connect(self.db_path)\n",
        "        query = f\"SELECT Date, Close FROM `{self.symbol}` WHERE Date BETWEEN '{self.start_date}' AND '{self.end_date}'\"\n",
        "        prices = pd.read_sql_query(query, conn, parse_dates=['Date'])\n",
        "        prices.set_index('Date', inplace=True)\n",
        "        return prices\n",
        "\n",
        "    def CurPrice(self, curDate):\n",
        "        return self.prices.loc[curDate, 'Close'] if curDate in self.prices.index else None\n",
        "\n",
        "    def NDayRet(self, N, curDate):\n",
        "        if curDate not in self.prices.index:\n",
        "            return None\n",
        "        start_date = self.prices.index[self.prices.index.get_loc(curDate) - N]\n",
        "        start_price = self.prices.loc[start_date, 'Close']\n",
        "        end_price = self.prices.loc[curDate, 'Close']\n",
        "        return (end_price - start_price) / start_price\n",
        "\n",
        "    def DailyRet(self, curDate):\n",
        "        if curDate not in self.prices.index:\n",
        "            return None\n",
        "        previous_date = self.prices.index[self.prices.index.get_loc(curDate) - 1]\n",
        "        previous_price = self.prices.loc[previous_date, 'Close']\n",
        "        current_price = self.prices.loc[curDate, 'Close']\n",
        "        return (current_price - previous_price) / previous_price\n",
        "\n",
        "    def Last30daysPrice(self, curDate):\n",
        "        end_loc = self.prices.index.get_loc(curDate) + 1\n",
        "        start_loc = max(0, end_loc - 30)\n",
        "        return self.prices.iloc[start_loc:end_loc]['Close'].values\n",
        "\n",
        "# Function to calculate monthly and daily percentage change\n",
        "def calculate_percentage_changes(stocks):\n",
        "    monthly_pct_change = pd.DataFrame()\n",
        "    for symbol, stock_obj in stocks.items():\n",
        "        monthly_pct_change[symbol] = stock_obj.prices['Close'].resample('M').last().pct_change()\n",
        "    monthly_pct_change.fillna(0, inplace=True)\n",
        "    return monthly_pct_change\n",
        "\n",
        "# Function to update stock investments\n",
        "def update_stock_investments(monthly_pct_change, month_index, stock_investments):\n",
        "    month = monthly_pct_change.index[month_index]\n",
        "    month_performance = monthly_pct_change.loc[month]\n",
        "    positive_stocks = [stock for stock, pct_change in month_performance.items() if pct_change > 0]\n",
        "    portfolio_value = sum(stock_investments.iloc[month_index - 1][symbol] * (1 + monthly_pct_change.at[month, symbol])\n",
        "                          for symbol in nifty_50_symbols if pd.notna(monthly_pct_change.at[month, symbol]))\n",
        "\n",
        "    if positive_stocks:\n",
        "        investment_per_positive_stock = portfolio_value / len(positive_stocks)\n",
        "        stock_investments.loc[month] = {stock: investment_per_positive_stock if stock in positive_stocks else 0 for stock in nifty_50_symbols}\n",
        "    else:\n",
        "        stock_investments.loc[month] = 0\n",
        "\n",
        "    return portfolio_value\n",
        "\n",
        "\n",
        "def calculate_portfolio(start_date, end_date, investment_amount):\n",
        "\n",
        "  # Initialize stock dataframes and stocks object\n",
        "  stocks = {symbol: Stock(symbol, db_path, start_date, end_date) for symbol in nifty_50_symbols}\n",
        "  monthly_pct_change = calculate_percentage_changes(stocks)\n",
        "  stock_investments = pd.DataFrame(index=monthly_pct_change.index, columns=nifty_50_symbols)\n",
        "  portfolio_returns = pd.DataFrame(index=monthly_pct_change.index, columns=[\"portfolio_returns\"])\n",
        "\n",
        "  # Initialize stock investments\n",
        "  num_stocks = len(nifty_50_symbols)\n",
        "  investment_per_stock = investment_amount / num_stocks\n",
        "  stock_investments.iloc[0] = investment_per_stock\n",
        "\n",
        "  # Calculate portfolio returns\n",
        "  for month_index in range(1, len(monthly_pct_change.index)):\n",
        "      portfolio_value = update_stock_investments(monthly_pct_change, month_index, stock_investments)\n",
        "      portfolio_returns.at[monthly_pct_change.index[month_index], 'portfolio_returns'] = portfolio_value\n",
        "\n",
        "  # Create Stock object and Calculate monthly returns for NIFTY50\n",
        "  nifty_50_stock = Stock('NIFTY50', db_path, start_date, end_date)\n",
        "  nifty_50_monthly_return = nifty_50_stock.prices['Close'].resample('M').last().pct_change()\n",
        "  nifty_50_portfolio_change = nifty_50_monthly_return*(investment_amount)\n",
        "  nifty_50_portfolio_value =nifty_50_portfolio_change.cumsum()+investment_amount\n",
        "\n",
        "  return portfolio_returns, nifty_50_portfolio_value, stock_investments\n",
        "\n",
        "def calculate_cagr(final_value, initial_value, start_date, end_date):\n",
        "    num_years = (pd.to_datetime(end_date) - pd.to_datetime(start_date)).days / 365.25\n",
        "    return (final_value / initial_value) ** (1 / num_years) - 1\n",
        "\n",
        "def plot_chart(start_date, end_date, investment_amount):\n",
        "    # Assuming calculate_portfolio is a function that returns the portfolio returns\n",
        "    # and nifty_50_portfolio_value over time as Pandas Series\n",
        "    portfolio_returns, nifty_50_portfolio_value, stock_investments = calculate_portfolio(start_date, end_date, investment_amount)\n",
        "\n",
        "    # Calculate CAGRs\n",
        "    portfolio_cagr = calculate_cagr(portfolio_returns.iloc[-1], investment_amount, start_date, end_date)[0]\n",
        "    nifty50_cagr = calculate_cagr(nifty_50_portfolio_value.iloc[-1], investment_amount, start_date, end_date)\n",
        "\n",
        "    # Visualization\n",
        "    plt.figure(figsize=(12, 6))\n",
        "    plt.plot(portfolio_returns.index, portfolio_returns, label=f'Portfolio (CAGR: {portfolio_cagr*100:.2f}%)')\n",
        "    plt.plot(nifty_50_portfolio_value.index, nifty_50_portfolio_value, label=f'NIFTY 50 (CAGR: {nifty50_cagr*100:.2f}%)')\n",
        "    plt.title('Portfolio and NIFTY 50 Returns Over Time')\n",
        "    plt.xlabel('Date')\n",
        "    plt.ylabel('Portfolio Value (in Rupees)')\n",
        "    plt.legend()\n",
        "    plt.grid(True)\n",
        "    plt.savefig('portfolio_chart.png')\n",
        "    plt.show()\n",
        "\n",
        "    return 'portfolio_chart.png', f\"Portfolio CAGR: {portfolio_cagr*100:.2f}%, NIFTY 50 CAGR: {nifty50_cagr*100:.2f}%\",stock_investments\n",
        "\n",
        "# Replace these with your actual start date, end date, and investment amount\n",
        "start_date = '2011-01-01'\n",
        "end_date = '2023-01-01'\n",
        "investment_amount = 10000\n",
        "\n",
        "# Call the function with your actual parameters\n",
        "_,_,stock_investments = plot_chart(start_date, end_date, investment_amount)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 564
        },
        "id": "y0tK5jFOF1QX",
        "outputId": "860908a9-5f85-444a-d67e-cb2e33633701"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1200x600 with 1 Axes>"
            ],
            "image/png": "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ORnR0dG4ceNGjh85gOzRC926dcv1cYtTp07FwIEDc92mYcOG6nn8bxo9ejR+++037NixA+bm5oiIiEBERESuP15s2LABdnZ2+PTTTwFkT/M4deoULl26hKVLl6JatWqwsrJSt//333/Rrl27fM+biIiIqCQQBAGT9t7ClSexUCgFVLA2QZ8GzljRxxtHxjcDADyISkJieu5/W1PpxuSf3svmzZtRt25ddO7cGT4+PhAEAYcOHcqzir7K8OHDUaVKFdSrVw92dna4cOFCru1MTExw9OhRxMbGon79+vjiiy/QunVrrFy5UusYV61ahTp16ugUY79+/XDnzh2NoflGRkY4fvw4vv32W/zyyy9o1KgR6tevjxUrVmDcuHGoUaOGutK9paVljn12794d165dw61btyCTyXDy5ElMnjwZmzdvRtOmTeHp6an+gSG/YoRAdh2BMWPGYOHChUhJSYFcLkdwcDBSU1Pz3c7b2xve3t4ICAjAjh074O3tjY4dO2q0CQ4Oxvnz5/OcUhAeHo6wsDCNZQkJCfjjjz/y3GbNmjVISEhAy5YtUbZsWfVr165dGu0iIyPx008/YcWKFeplDRo0wDfffINOnTph9+7d6idEANk/ely8eBFDhgzJ97yJiIiISoLjdyMREBoHmVSMYxOa49y3n2De5zXRpZYTqjpawNnaGIIA3HwWr+9QqRgSCdpWMaN8JSYmwtLSEgkJCbCwsNBYl56ejidPnsDNzS1HETkqWkqlEomJibCwsIBYrNtvXZMmTUJiYiJ++eWXIoqO3tfkyZMRFxeHdevW5br+fb57crkchw4dQseOHd/5YxbRm3jvUEHx3qGC4r1TOmQplGi//F88ikrG6E/cMck351Oovt55HX/deIkJbSrj6zaV3rlP3jsfv/zy0Lex558oD9999x1cXFz4CLlizN7eHnPmzNF3GERERERFbm/AczyKSoaViRRftXDPtU2dCmUAAIFhcbmup9Lt4yg3T6QHVlZWmDZtmr7DoHx88803+g6BiIiIqMilZSqw9MQDAMCYTzxgIcu9l16V/F8Pi4NSKUAs/rieuEVFiz3/RERERERExdjmi08QmZiBclbGGODjkme7qmXNIZOKkZiehZBXyR8wQvoYMPknIiIiIiIqpuJSMrHmzGMAwETfyjAyyPupUFKJGDXLWwEAAkPjP0B09DFh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oRSAPg2cMbSpm75DKnbKmBri7LctYSAWsw5CEWLyT0REREREVATuRyRi2K/XkJmlRNtqDpjTtQaT2zwYGUj0HUKJx2H/REREREREhexZbCoGbryCpPQs1Hctg5/7eMNAwvSL9Id3HxERERERUSGKTcnEoE1XEJWUgSoO5tgwsD5kUvZsk34x+SciIiIiIiokaZkKDNlyFSGvUlDOyhhbv2wASxOpvsMiYvJPRERERERUWPYGPMPNZ/GwMpFi65cN4Ggp03dIRACY/BMRERERERWaY3cjAQAjW7jDw95Mz9EQ/YfJPxERERERUSFIzsjC5ZBYAEAbT3s9R0Okick/ERERERFRITj/MBqZCiVcbEzgbsdefypemPwTEREREREVghP3ogAAras6QCQS6TkaIk1M/omIiIiIiN6TQing9P3s5J9D/qk4YvJPRERERET0nm48i0dMSibMZQao72at73CIcmDyT0RERERE9J5O3suu8t+ish2kEqZZVPzwriQiIiIiInpPJ++phvw76DkSotwx+SciIiIiInoPz2JTERyZBIlYhJZV7PQdDlGumPwTERERERG9B9WQ/7ouZWBlYqjnaIhyx+SfiIiIiIjoPZxklX/6CDD5JyIiIiIiKqDkjCxcDokFALTmfH8qxpj8ExERERERFdC/D6KRqVDCzdYU7nZm+g6HKE9M/omIiIiIiAroxOsq/62rcsg/FW9M/omIiIiIiApAoRRwOvh18s8h/1TMMfknIiIiIiIqgBvP4hCbkglzmQHquZbRdzhE+WLyT0REREREVACqIf8tq9hDKmFqRcUb71AiIiIiIqICOHkvEgAf8UcfByb/REREREREOnoWm4oHkcmQiEVoWZnJPxV/TP6JiIiIiIh0dOxudq9/PZcysDSR6jkaondj8k9ERERERKSj/ddfAAA6epXVcyRE2mHyT0REREREpINHUUm4/SIBBmIRPq3lpO9wiLTC5J+IiIiIiEgH+6+/BAC0rGIHa1NDPUdDpB0m/0RERERERFpSKgXsv5E95L+bdzk9R0OkPSb/REREREREWroWGofncWkwMzJAG08HfYdDpDUm/0RERERERFra97rQX4cajpBJJXqOhkh7TP6JiIiIiIi0kJGlwMFb2fP9P6vDIf/0cWHyT0REREREpIXT96ORmJ6FspYyNHKz0Xc4RDph8k9E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lQIAqGBtAqlE51nNRKWGzsl/7dq1IRKJIAiCxvJGjRph06ZNhRYYERERERHRu4S8SgYAVLRjrz9RfnRO/p88eaLxXiwWw87ODjKZrNCCIiIiIiIi0sbjqOzk393OVM+REBVvOif/Li4uuS4PDAzEjBkzcODAgfcOioiIiIiISBshr7KH/buz558oXzpNijl69CgmTpyIadOmISQkBABw//59dOvWDfXr14dSqSySIImIiIiIiHITEp2d/Fdkzz9RvrTu+d+4cSOGDx8Oa2trxMXFYcOGDViyZAnGjh2LXr16ISgoCJ6enkUZKxERERERkVpqZhZexKcB4Jx/onfRuud/+fLlWLBgAV69eoXdu3fj1atXWL16NW7fvo21a9cy8SciIiIiog/qyesh/2VMpLA2NdRzNETFm9bJ/+PHj9GjRw8AwOeffw4DAwMsWrQI5cuXL7LgiIiIiIiI8vJYPeSfvf5E76J18p+WlgYTExMAgEgkgpGREcqWLVtkgREREREREeUnJJqV/om0pVO1/w0bNsDMLPtXtaysLGzZsgW2trYabcaNG1d40REREREREeWBPf9E2tM6+a9QoQLWr1+vfu/o6Iht27ZptBGJREz+iYiIiIjog/iv55/JP9G7aJ38P336tAjDICIiIiIi0p5SKfAxf0Q60HrOPxERERERUXERkZiONLkCBmIRKlib6DscomKPyT8REREREX10Hr8e8l/BxgRSCdMaonfht4SIiIiIiD46qiH/nO9PpB0m/0RERERE9NFR9fxzvj+Rdpj8ExERERHRR4c9/0S60bra/5uUSiUePXqEqKgoKJVKjXXNmzcvlMCIiIiIiIjy8lj9mD/2/BNpQ+fk/9KlS+jbty9CQ0MhCILGOpFIBIVCUWjBERERERERvS0lIwvhCekAgIq27Pkn0obOyf/IkSNRr149HDx4EGXLloVIJCqKuIiIiIiIiHL15FX2kH9rU0OUMTXUczREHwedk/+HDx9i79698PDwKIp4iIiIiIiI8qUu9mfLIf9E2tK54F/Dhg3x6NGjooiFiIiIiIjonVjsj0h3Ovf8jx07Ft988w0iIiLg5eUFqVSqsb5mzZqFFhwREREREdHb+Jg/It3pnPx3794dAPDll1+ql4lEIgiCwIJ/RERERERU5NjzT6Q7nZP/J0+eFEUcRERERERE76RUCgh5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fLKsaykiIiIiIlImyu1SfyLFVqMNXP0RjF6Hq+tD7KsSg2vQf818fBERERERkfOQgn+pvEJq4u75JKvq3atl9kRERERE5Lym4F9ERERERESkklPwLyIiIiIiIlLJKfgXERERERERqeQU/IuIiIiIiIhUcgr+RURERERERCo5Bf8iIiIiIiIilZyCfxEREREREZFKTsG/iIiIiIiISCWn4F9ERERERESkklPwLyIiIiIiIlLJKfgXERERERERqeQU/IuIiIiIiIhUcgr+RURERERERCo5Bf8iIiIiIiIilZyCfxEREREREZFKTsG/iIiIiIiISCWn4F9ERERERESkklPwLyIiIiIiIlLJeZV1BSoLy7IASE1NLeOayN85nU4yMzNJTU3F29u7rKsjFYjajhSX2o4Ul9qOFJfajhSX2k7Fdzz+PB6PnomCfw9JS0sDIDo6uoxrIiIiIiIiIueTtLQ0QkNDz1jGZhXmEYGcldvt5uDBgwQHB2Oz2cq6OnJMamoq0dHR7Nu3j5CQkLKujlQgajtSXGo7UlxqO1JcajtSXGo7FZ9lWaSlpVGzZk3s9jPP6lfPv4fY7XZq165d1tWQ0wgJCdE/aFIsajtSXGo7UlxqO1JcajtSXGo7FdvZevyPU8I/ERERERERkUpOwb+IiIiIiIhIJafgXyo1X19fnn32WXx9fcu6KlLBqO1IcantSHGp7Uhxqe1IcantnF+U8E9ERERERESkklPPv4iIiIiIiEglp+BfREREREREpJJT8C8iIiIiIiJSySn4FxEREREREankFPxLuTd27FguuOACgoODiYyMZNCgQWzdurVAmezsbEaOHEnVqlUJCgpiyJAhJCQkFCjzwAMP0LFjR3x9fWnXrt1J15k/fz5XXXUVNWrUIDAwkHbt2vH111+X5K1JCSuttvN3O3bsIDg4mLCwMA/fjZSW0mw3lmXx+uuv06RJE3x9falVqxYvvfRSSd2alLDSbDszZ86kS5cuBAcHExERwZAhQ9izZ08J3ZmUNE+0nbVr13LjjTcSHR2Nv78/zZs355133jnpWvPnz6dDhw74+vrSqFEjJkyYUNK3JyWotNrODz/8QJ8+fYiIiCAkJISYmBhmzpxZKvconqPgX8q9BQsWMHLkSJYsWcLs2bNxOp307duXjIyM/DIPPfQQv/76K1OmTGHBggUcPHiQwYMHn3Su2267jeuvv/6U11m0aBFt2rTh+++/Z926dYwYMYKhQ4cyderUErs3KVml1XaOczqd3HjjjVx88cUevxcpPaXZbh588EE++eQTXn/9dbZs2cIvv/zChRdeWCL3JSWvtNrO7t27ueqqq+jVqxdr1qxh5syZHD58+JTnkYrBE21n5cqVREZG8tVXX7Fx40aefPJJHn/8cd5///38Mrt372bAgAH07NmTNWvWMHr0aO644w4FcRVYabWdP/74gz59+jB9+nRWrlxJz549ufLKK1m9enWp3q+cI0ukgklMTLQAa8GCBZZlWVZycrLl7e1tTZkyJb/M5s2bLcBavHjxSZ9/9tlnrbZt2xbqWv3797dGjBjhkXpL2SvptvPYY49Zt9xyizV+/HgrNDTU09WXMlJS7WbTpk2Wl5eXtWXLlhKru5Stkmo7U6ZMsby8vCyXy5W/75dffrFsNpuVm5vr+RuRUneubee4++67z+rZs2f++8cee8xq2bJlgTLXX3+91a9fPw/fgZSVkmo7p9KiRQvr+eef90zFpVSo518qnJSUFADCw8MB87TS6XTSu3fv/DLNmjWjTp06LF68+Jyvdfw6UvGVZNuZN28eU6ZMYdy4cZ6rsJQLJdVufv31Vxo0aMDUqVOpX78+9erV44477iApKcmzNyBlpqTaTseOHbHb7YwfPx6Xy0VKSgpffvklvXv3xtvb27M3IWXCU23nn7/HLF68uMA5APr163fOvy9J+VFSbeef3G43aWlp+j25glHwLxWK2+1m9OjRdOvWjVatWgEQHx+Pj4/PSXOso6KiiI+PL/a1Jk+ezPLlyxkxYsS5VFnKiZJsO0eOHGH48OFMmDCBkJAQT1ZbylhJtptdu3axd+9epkyZwhdffMGECRNYuXIl11xzjSdvQcpISbad+vXrM2vWLJ544gl8fX0JCwtj//79TJ482ZO3IGXEU21n0aJFTJo0ibvuuit/X3x8PFFRUSedIzU1laysLM/eiJS6kmw7//T666+Tnp7Odddd57H6S8nzKusKiBTFyJEj2bBhAwsXLizR6/z++++MGDGC//3vf7Rs2bJEryWloyTbzp133slNN91E9+7dPX5uKVsl2W7cbjc5OTl88cUXNGnSBIBPP/2Ujh07snXrVpo2berxa0rpKcm2Ex8fz5133smwYcO48cYbSUtL45lnnuGaa65h9uzZ2Gw2j19TSo8n2s6GDRu46qqrePbZZ+nbt68HayflWWm1nYkTJ/L888/z888/ExkZWexrSelTz79UGKNGjWLq1Kn8/vvv1K5dO39/9erVyc3NJTk5uUD5hIQEqlevXuTrLFiwgCuvvJK33nqLoUOHnmu1pRwo6bYzb948Xn/9dby8vPDy8uL2228nJSUFLy8vPvvsM0/dhpSykm43NWrUwMvLKz/wB2jevDkAsbGx51Z5KVMl3XbGjRtHaGgor776Ku3bt6d79+589dVXzJ07l6VLl3rqNqQMeKLtbNq0iUsvvZS77rqLp556qsCx6tWrn7S6REJCAiEhIfj7+3v2ZqRUlXTbOe7bb7/ljjvuYPLkySdNIZHyT8G/lHuWZTFq1Ch+/PFH5s2bR/369Qsc79ixI97e3sydOzd/39atW4mNjSUmJqZI15o/fz4DBgzglVdeOeNQJ6kYSqvtLF68mDVr1uRvL7zwAsHBwaxZs4arr77aY/cjpaO02k23bt3Iy8tj586d+fu2bdsGQN26dc/xLqQslFbbyczMxG4v+Cucw+EAzIgSqXg81XY2btxIz549GTZs2CmXDY2JiSlwDoDZs2cX+fclKT9Kq+0AfPPNN4wYMYJvvvmGAQMGlMwNSckqy2yDIoVx7733WqGhodb8+fOtuLi4/C0zMzO/zD333GPVqVPHmjdvnrVixQorJibGiomJKXCe7du3W6tXr7buvvtuq0mTJtbq1aut1atXWzk5OZZlWda8efOsgIAA6/HHHy9wnSNHjpTq/YrnlFbb+Sdl+6/YSqvduFwuq0OHDlb37t2tVatWWStWrLA6d+5s9enTp1TvVzyntNrO3LlzLZvNZj3//PPWtm3brJUrV1r9+vWz6tatW+BaUnF4ou2sX7/eioiIsG655ZYC50hMTMwvs2vXLisgIMB69NFHrc2bN1vjxo2zHA6HNWPGjFK9X/Gc0mo7X3/9teXl5WWNGzeuQJnk5ORSvV85Nwr+pdwDTrmNHz8+v0xWVpZ13333WVWqVLECAgKsq6++2oqLiytwnksuueSU59m9e7dlWZY1bNiwUx6/5JJLSu9mxaNKq+38k4L/iq00282BAweswYMHW0FBQVZUVJQ1fPhwPXCswEqz7XzzzTdW+/btrcDAQCsiIsIaOHCgtXnz5lK6U/E0T7SdZ5999pTnqFu3boFr/f7771a7du0sHx8fq0GDBgWuIRVPabWd0/27NGzYsNK7WTlnNsuyrOKNGRARERERERGRikBz/kVEREREREQqOQX/IiIiIiIiIpWcgn8RERERERGRSk7Bv4iIiIiIiEglp+BfREREREREpJJT8C8iIiIiIiJSySn4FxEREREREankFPyLiIiIiIiIVHIK/kVEREREREQqOQX/IiIi4hHDhw/HZrNhs9nw9vYmKiqKPn368Nlnn+F2uwt9ngkTJhAWFlZyFRURETkPKfgXERERj7nsssuIi4tjz549/Pbbb/Ts2ZMHH3yQK664gry8vLKunoiIyHlLwb+IiIh4jK+vL9WrV6dWrVp06NCBJ554gp9//pnffvuNCRMmAPDmm2/SunVrAgMDiY6O5r777iM9PR2A+fPnM2LECFJSUvJHETz33HMA5OTk8Mgjj1CrVi0CAwPp3Lkz8+fPL5sbFRERqWAU/IuIiEiJ6tWrF23btuWHH34AwG638+6777Jx40Y+//xz5s2bx2OPPQZA165defvttwkJCSEuLo64uDgeeeQRAEaNGsXixYv59ttvWbduHddeey2XXXYZ27dvL7N7ExERqShslmVZZV0JERERqfiGDx9OcnIyP/3000nHbrjhBtatW8emTZtOOvbdd99xzz33cPjwYcDM+R89ejTJycn5ZWJjY2nQoAGxsbHUrFkzf3/v3r258MIL+c9//uPx+xEREalMvMq6AiIiIlL5WZaFzWYDYM6cOYwdO5YtW7aQmppKXl4e2dnZZGZmEhAQcMrPr1+/HpfLRZMmTQrsz8nJoWrVqiVefxERkYpOwb+IiIiUuM2bN1O/fn327NnDFVdcwb333stLL71EeHg4Cxcu5Pbbbyc3N/e0wX96ejoOh4OVK1ficDgKHAsKCiqNWxAREanQFPyLiIhIiZo3bx7r16/noYceYuXKlbjdbt544w3sdpN6aPLkyQXK+/j44HK5Cuxr3749LpeLxMRELr744lKru4iISGWh4F9EREQ8Jicnh/j4eFwuFwkJCcyYMYOxY8dyxRVXMHToUDZs2IDT6eS9997jyiuv5K+//uKjjz4qcI569eqRnp7O3Llzadu2LQEBATRp0oSbb76ZoUOH8sYbb9C+fXsOHTrE3LlzadOmDQMGDCijOxYREakYlO1fREREPGbGjBnUqFGDevXqcdlll/H777/z7rvv8vPPP+NwOGjbti1vvvkmr7zyCq1ateLrr79m7NixBc7RtWtX7rnnHq6//noiIiJ49dVXARg/fjxDhw7l4YcfpmnTpgwaNIjly5dTp06dsrhVERGRCkXZ/kVEREREREQqOfX8i4iIiIiIiFRyCv5FREREREREKjkF/yIiIiIiIiKVnIJ/ERERERERkUpOwb+IiIiIiIhIJafgX0RERERERKSSU/AvIiIiIiIiUskp+BcRERERERGp5BT8i4iIiIiIiFRyCv5FREREREREKjkF/yIiIiIiIiKV3P8DqS0O9JZkc2AAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "stock_investments"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 455
        },
        "id": "2EmIuqgWtNZ5",
        "outputId": "6a91ea03-d239-4961-8268-7c17dab2a81f"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "               ADANIENT   ADANIPORTS   APOLLOHOSP   ASIANPAINT     AXISBANK  \\\n",
              "Date                                                                          \n",
              "2011-01-31        200.0        200.0        200.0        200.0        200.0   \n",
              "2011-02-28   649.115912          0.0          0.0          0.0          0.0   \n",
              "2011-03-31   234.575287          0.0   234.575287   234.575287   234.575287   \n",
              "2011-04-30          0.0   418.356624   418.356624   418.356624          0.0   \n",
              "2011-05-31   492.884851   492.884851   492.884851   492.884851          0.0   \n",
              "...                 ...          ...          ...          ...          ...   \n",
              "2022-08-31   1818.74699   1818.74699   1818.74699   1818.74699   1818.74699   \n",
              "2022-09-30   5037.34386          0.0   5037.34386          0.0          0.0   \n",
              "2022-10-31          0.0   1785.31807   1785.31807          0.0   1785.31807   \n",
              "2022-11-30  2034.528131  2034.528131  2034.528131  2034.528131          0.0   \n",
              "2022-12-31          0.0          0.0          0.0          0.0  7081.429501   \n",
              "\n",
              "             BAJAJ-AUTO  BAJFINANCE  BAJAJFINSV         BPCL   BHARTIARTL  \\\n",
              "Date                                                                        \n",
              "2011-01-31        200.0       200.0       200.0        200.0        200.0   \n",
              "2011-02-28   649.115912  649.115912  649.115912          0.0   649.115912   \n",
              "2011-03-31   234.575287  234.575287  234.575287   234.575287   234.575287   \n",
              "2011-04-30   418.356624         0.0  418.356624   418.356624   418.356624   \n",
              "2011-05-31          0.0         0.0         0.0   492.884851          0.0   \n",
              "...                 ...         ...         ...          ...          ...   \n",
              "2022-08-31   1818.74699  1818.74699  1818.74699          0.0   1818.74699   \n",
              "2022-09-30          0.0  5037.34386         0.0          0.0   5037.34386   \n",
              "2022-10-31   1785.31807         0.0  1785.31807          0.0   1785.31807   \n",
              "2022-11-30  2034.528131         0.0         0.0  2034.528131  2034.528131   \n",
              "2022-12-31          0.0         0.0         0.0          0.0          0.0   \n",
              "\n",
              "            ...    SUNPHARMA   TATAMOTORS    TATASTEEL          TCS  \\\n",
              "Date        ...                                                       \n",
              "2011-01-31  ...        200.0        200.0        200.0        200.0   \n",
              "2011-02-28  ...          0.0          0.0          0.0          0.0   \n",
              "2011-03-31  ...   234.575287   234.575287   234.575287   234.575287   \n",
              "2011-04-30  ...   418.356624          0.0          0.0          0.0   \n",
              "2011-05-31  ...   492.884851          0.0          0.0          0.0   \n",
              "...         ...          ...          ...          ...          ...   \n",
              "2022-08-31  ...          0.0   1818.74699   1818.74699          0.0   \n",
              "2022-09-30  ...   5037.34386          0.0          0.0          0.0   \n",
              "2022-10-31  ...   1785.31807   1785.31807   1785.31807   1785.31807   \n",
              "2022-11-30  ...  2034.528131  2034.528131  2034.528131  2034.528131   \n",
              "2022-12-31  ...          0.0          0.0  7081.429501          0.0   \n",
              "\n",
              "             TATACONSUM        TECHM       TITAN   ULTRACEMCO          UPL  \\\n",
              "Date                                                                         \n",
              "2011-01-31        200.0        200.0       200.0        200.0        200.0   \n",
              "2011-02-28          0.0          0.0         0.0          0.0          0.0   \n",
              "2011-03-31   234.575287   234.575287  234.575287   234.575287   234.575287   \n",
              "2011-04-30   418.356624   418.356624  418.356624          0.0   418.356624   \n",
              "2011-05-31          0.0          0.0  492.884851          0.0   492.884851   \n",
              "...                 ...          ...         ...          ...          ...   \n",
              "2022-08-31          0.0   1818.74699  1818.74699   1818.74699   1818.74699   \n",
              "2022-09-30          0.0          0.0  5037.34386          0.0          0.0   \n",
              "2022-10-31          0.0   1785.31807  1785.31807   1785.31807   1785.31807   \n",
              "2022-11-30  2034.528131  2034.528131         0.0  2034.528131  2034.528131   \n",
              "2022-12-31          0.0          0.0         0.0          0.0          0.0   \n",
              "\n",
              "                  WIPRO  \n",
              "Date                     \n",
              "2011-01-31        200.0  \n",
              "2011-02-28   649.115912  \n",
              "2011-03-31   234.575287  \n",
              "2011-04-30          0.0  \n",
              "2011-05-31          0.0  \n",
              "...                 ...  \n",
              "2022-08-31          0.0  \n",
              "2022-09-30          0.0  \n",
              "2022-10-31          0.0  \n",
              "2022-11-30  2034.528131  \n",
              "2022-12-31          0.0  \n",
              "\n",
              "[144 rows x 50 columns]"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-e0d4cca2-761f-4e4e-bc21-a30f27b84b46\" class=\"colab-df-container\">\n",
              "    <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>ADANIENT</th>\n",
              "      <th>ADANIPORTS</th>\n",
              "      <th>APOLLOHOSP</th>\n",
              "      <th>ASIANPAINT</th>\n",
              "      <th>AXISBANK</th>\n",
              "      <th>BAJAJ-AUTO</th>\n",
              "      <th>BAJFINANCE</th>\n",
              "      <th>BAJAJFINSV</th>\n",
              "      <th>BPCL</th>\n",
              "      <th>BHARTIARTL</th>\n",
              "      <th>...</th>\n",
              "      <th>SUNPHARMA</th>\n",
              "      <th>TATAMOTORS</th>\n",
              "      <th>TATASTEEL</th>\n",
              "      <th>TCS</th>\n",
              "      <th>TATACONSUM</th>\n",
              "      <th>TECHM</th>\n",
              "      <th>TITAN</th>\n",
              "      <th>ULTRACEMCO</th>\n",
              "      <th>UPL</th>\n",
              "      <th>WIPRO</th>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Date</th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>2011-01-31</th>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>...</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "      <td>200.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2011-02-28</th>\n",
              "      <td>649.115912</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>649.115912</td>\n",
              "      <td>649.115912</td>\n",
              "      <td>649.115912</td>\n",
              "      <td>0.0</td>\n",
              "      <td>649.115912</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>649.115912</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2011-03-31</th>\n",
              "      <td>234.575287</td>\n",
              "      <td>0.0</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>...</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "      <td>234.575287</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2011-04-30</th>\n",
              "      <td>0.0</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>0.0</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>0.0</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>...</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>0.0</td>\n",
              "      <td>418.356624</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2011-05-31</th>\n",
              "      <td>492.884851</td>\n",
              "      <td>492.884851</td>\n",
              "      <td>492.884851</td>\n",
              "      <td>492.884851</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>492.884851</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>492.884851</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>492.884851</td>\n",
              "      <td>0.0</td>\n",
              "      <td>492.884851</td>\n",
              "      <td>0.0</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",
              "      <td>...</td>\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",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "      <td>...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2022-08-31</th>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>1818.74699</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2022-09-30</th>\n",
              "      <td>5037.34386</td>\n",
              "      <td>0.0</td>\n",
              "      <td>5037.34386</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>5037.34386</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>5037.34386</td>\n",
              "      <td>...</td>\n",
              "      <td>5037.34386</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>5037.34386</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2022-10-31</th>\n",
              "      <td>0.0</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>...</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>0.0</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>1785.31807</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2022-11-30</th>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>...</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>0.0</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "      <td>2034.528131</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2022-12-31</th>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>7081.429501</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>...</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>7081.429501</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "<p>144 rows × 50 columns</p>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e0d4cca2-761f-4e4e-bc21-a30f27b84b46')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-e0d4cca2-761f-4e4e-bc21-a30f27b84b46 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-e0d4cca2-761f-4e4e-bc21-a30f27b84b46');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "<div id=\"df-50b87f27-bfdc-4700-911b-c8851838f8ba\">\n",
              "  <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-50b87f27-bfdc-4700-911b-c8851838f8ba')\"\n",
              "            title=\"Suggest charts\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "     width=\"24px\">\n",
              "    <g>\n",
              "        <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
              "    </g>\n",
              "</svg>\n",
              "  </button>\n",
              "\n",
              "<style>\n",
              "  .colab-df-quickchart {\n",
              "      --bg-color: #E8F0FE;\n",
              "      --fill-color: #1967D2;\n",
              "      --hover-bg-color: #E2EBFA;\n",
              "      --hover-fill-color: #174EA6;\n",
              "      --disabled-fill-color: #AAA;\n",
              "      --disabled-bg-color: #DDD;\n",
              "  }\n",
              "\n",
              "  [theme=dark] .colab-df-quickchart {\n",
              "      --bg-color: #3B4455;\n",
              "      --fill-color: #D2E3FC;\n",
              "      --hover-bg-color: #434B5C;\n",
              "      --hover-fill-color: #FFFFFF;\n",
              "      --disabled-bg-color: #3B4455;\n",
              "      --disabled-fill-color: #666;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart {\n",
              "    background-color: var(--bg-color);\n",
              "    border: none;\n",
              "    border-radius: 50%;\n",
              "    cursor: pointer;\n",
              "    display: none;\n",
              "    fill: var(--fill-color);\n",
              "    height: 32px;\n",
              "    padding: 0;\n",
              "    width: 32px;\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart:hover {\n",
              "    background-color: var(--hover-bg-color);\n",
              "    box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "    fill: var(--button-hover-fill-color);\n",
              "  }\n",
              "\n",
              "  .colab-df-quickchart-complete:disabled,\n",
              "  .colab-df-quickchart-complete:disabled:hover {\n",
              "    background-color: var(--disabled-bg-color);\n",
              "    fill: var(--disabled-fill-color);\n",
              "    box-shadow: none;\n",
              "  }\n",
              "\n",
              "  .colab-df-spinner {\n",
              "    border: 2px solid var(--fill-color);\n",
              "    border-color: transparent;\n",
              "    border-bottom-color: var(--fill-color);\n",
              "    animation:\n",
              "      spin 1s steps(1) infinite;\n",
              "  }\n",
              "\n",
              "  @keyframes spin {\n",
              "    0% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "      border-left-color: var(--fill-color);\n",
              "    }\n",
              "    20% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    30% {\n",
              "      border-color: transparent;\n",
              "      border-left-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    40% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-top-color: var(--fill-color);\n",
              "    }\n",
              "    60% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "    }\n",
              "    80% {\n",
              "      border-color: transparent;\n",
              "      border-right-color: var(--fill-color);\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "    90% {\n",
              "      border-color: transparent;\n",
              "      border-bottom-color: var(--fill-color);\n",
              "    }\n",
              "  }\n",
              "</style>\n",
              "\n",
              "  <script>\n",
              "    async function quickchart(key) {\n",
              "      const quickchartButtonEl =\n",
              "        document.querySelector('#' + key + ' button');\n",
              "      quickchartButtonEl.disabled = true;  // To prevent multiple clicks.\n",
              "      quickchartButtonEl.classList.add('colab-df-spinner');\n",
              "      try {\n",
              "        const charts = await google.colab.kernel.invokeFunction(\n",
              "            'suggestCharts', [key], {});\n",
              "      } catch (error) {\n",
              "        console.error('Error during call to suggestCharts:', error);\n",
              "      }\n",
              "      quickchartButtonEl.classList.remove('colab-df-spinner');\n",
              "      quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
              "    }\n",
              "    (() => {\n",
              "      let quickchartButtonEl =\n",
              "        document.querySelector('#df-50b87f27-bfdc-4700-911b-c8851838f8ba button');\n",
              "      quickchartButtonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "    })();\n",
              "  </script>\n",
              "</div>\n",
              "\n",
              "  <div id=\"id_6d3535a6-614e-4c9c-981b-9b8962bf3885\">\n",
              "    <style>\n",
              "      .colab-df-generate {\n",
              "        background-color: #E8F0FE;\n",
              "        border: none;\n",
              "        border-radius: 50%;\n",
              "        cursor: pointer;\n",
              "        display: none;\n",
              "        fill: #1967D2;\n",
              "        height: 32px;\n",
              "        padding: 0 0 0 0;\n",
              "        width: 32px;\n",
              "      }\n",
              "\n",
              "      .colab-df-generate:hover {\n",
              "        background-color: #E2EBFA;\n",
              "        box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "        fill: #174EA6;\n",
              "      }\n",
              "\n",
              "      [theme=dark] .colab-df-generate {\n",
              "        background-color: #3B4455;\n",
              "        fill: #D2E3FC;\n",
              "      }\n",
              "\n",
              "      [theme=dark] .colab-df-generate:hover {\n",
              "        background-color: #434B5C;\n",
              "        box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "        filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "        fill: #FFFFFF;\n",
              "      }\n",
              "    </style>\n",
              "    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('stock_investments')\"\n",
              "            title=\"Generate code using this dataframe.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "    <script>\n",
              "      (() => {\n",
              "      const buttonEl =\n",
              "        document.querySelector('#id_6d3535a6-614e-4c9c-981b-9b8962bf3885 button.colab-df-generate');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      buttonEl.onclick = () => {\n",
              "        google.colab.notebook.generateWithVariable('stock_investments');\n",
              "      }\n",
              "      })();\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ]
          },
          "metadata": {},
          "execution_count": 78
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Average investment per month per stock"
      ],
      "metadata": {
        "id": "6peQLrCbxOp7"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "stock_investments.astype(float).mean(axis=0).sort_values(ascending=False)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "B6tKnwnUuYTr",
        "outputId": "ff2181c0-6242-41f4-d013-542b08d070f1"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "DIVISLAB      914.410811\n",
              "DRREDDY       828.887599\n",
              "BAJFINANCE    817.372777\n",
              "ADANIENT      740.777482\n",
              "HINDUNILVR    738.324039\n",
              "APOLLOHOSP    736.856994\n",
              "EICHERMOT     731.638713\n",
              "TITAN         726.967922\n",
              "JSWSTEEL      726.048240\n",
              "INDUSINDBK    721.715099\n",
              "ASIANPAINT    706.286255\n",
              "INFY          699.933585\n",
              "NESTLEIND     699.421875\n",
              "BAJAJFINSV    697.382436\n",
              "MARUTI        696.319088\n",
              "SUNPHARMA     693.443899\n",
              "CIPLA         692.726169\n",
              "M&M           675.556899\n",
              "HCLTECH       667.099927\n",
              "TECHM         665.219389\n",
              "BHARTIARTL    659.364579\n",
              "BRITANNIA     656.002413\n",
              "ICICIBANK     643.448954\n",
              "KOTAKBANK     641.484878\n",
              "TATASTEEL     640.689690\n",
              "WIPRO         631.818793\n",
              "UPL           624.707718\n",
              "POWERGRID     621.557748\n",
              "ONGC          619.884373\n",
              "ITC           619.195766\n",
              "HDFCBANK      611.551666\n",
              "LT            608.194409\n",
              "GRASIM        605.577431\n",
              "RELIANCE      605.266195\n",
              "TCS           604.632713\n",
              "AXISBANK      602.445155\n",
              "ULTRACEMCO    601.897253\n",
              "SBIN          600.075592\n",
              "HINDALCO      589.769667\n",
              "BAJAJ-AUTO    588.357108\n",
              "ADANIPORTS    557.144661\n",
              "BPCL          556.414198\n",
              "LTIM          540.926846\n",
              "TATACONSUM    536.227206\n",
              "TATAMOTORS    533.195657\n",
              "COALINDIA     526.398881\n",
              "HEROMOTOCO    499.767838\n",
              "SBILIFE       492.481505\n",
              "NTPC          491.228153\n",
              "HDFCLIFE      422.010349\n",
              "dtype: float64"
            ]
          },
          "metadata": {},
          "execution_count": 79
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "def plot_chart(start_date, end_date, investment_amount):\n",
        "    portfolio_returns, nifty_50_portfolio_value,_ = calculate_portfolio(start_date, end_date, investment_amount)\n",
        "\n",
        "    # Creating the figure\n",
        "    fig = go.Figure()\n",
        "\n",
        "    # Adding Portfolio Returns trace\n",
        "    fig.add_trace(go.Scatter(x=portfolio_returns.index, y=portfolio_returns['portfolio_returns'],\n",
        "                    mode='lines',\n",
        "                    name='Portfolio Returns'))\n",
        "\n",
        "    # Adding Nifty 50 Portfolio Value trace\n",
        "    fig.add_trace(go.Scatter(x=nifty_50_portfolio_value.index, y=nifty_50_portfolio_value.fillna(10000).values,\n",
        "                    mode='lines',\n",
        "                    name='Nifty 50 Portfolio Value'))\n",
        "\n",
        "    # Updating layout\n",
        "    fig.update_layout(\n",
        "        title='Portfolio Returns Over Time',\n",
        "        xaxis_title='Date',\n",
        "        yaxis_title='Portfolio Value (in Rupees)',\n",
        "        legend_title=\"Legend\",\n",
        "        font=dict(\n",
        "            family=\"Courier New, monospace\",\n",
        "            size=18,\n",
        "            color=\"RebeccaPurple\"\n",
        "        )\n",
        "    )\n",
        "\n",
        "    # Saving the figure\n",
        "    #fig.write_image('portfolio_chart.png')\n",
        "\n",
        "    # Show the figure\n",
        "    fig.show()\n",
        "\n",
        "    cagr = 100  # This should be calculated based on the actual data\n",
        "\n",
        "    return 'portfolio_chart.png', f\"CAGR: {cagr*100:.2f}%\"\n",
        "plot_chart(start_date, end_date, investment_amount)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 559
        },
        "id": "BeHNc73xYMub",
        "outputId": "54857923-d36f-482a-8841-f0df50f86d12"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<html>\n",
              "<head><meta charset=\"utf-8\" /></head>\n",
              "<body>\n",
              "    <div>            <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script>                <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
              "        <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.24.1.min.js\"></script>                <div id=\"121889aa-4caf-4d70-9875-5d302762fe1a\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div>            <script type=\"text/javascript\">                                    window.PLOTLYENV=window.PLOTLYENV || {};                                    if (document.getElementById(\"121889aa-4caf-4d70-9875-5d302762fe1a\")) {                    Plotly.newPlot(                        \"121889aa-4caf-4d70-9875-5d302762fe1a\",                        [{\"mode\":\"lines\",\"name\":\"Portfolio Returns\",\"x\":[\"2011-01-31T00:00:00\",\"2011-02-28T00:00:00\",\"2011-03-31T00:00:00\",\"2011-04-30T00:00:00\",\"2011-05-31T00:00:00\",\"2011-06-30T00:00:00\",\"2011-07-31T00:00:00\",\"2011-08-31T00:00:00\",\"2011-09-30T00:00:00\",\"2011-10-31T00:00:00\",\"2011-11-30T00:00:00\",\"2011-12-31T00:00:00\",\"2012-01-31T00:00:00\",\"2012-02-29T00:00:00\",\"2012-03-31T00:00:00\",\"2012-04-30T00:00:00\",\"2012-05-31T00:00:00\",\"2012-06-30T00:00:00\",\"2012-07-31T00:00:00\",\"2012-08-31T00:00:00\",\"2012-09-30T00:00:00\",\"2012-10-31T00:00:00\",\"2012-11-30T00:00:00\",\"2012-12-31T00:00:00\",\"2013-01-31T00:00:00\",\"2013-02-28T00:00:00\",\"2013-03-31T00:00:00\",\"2013-04-30T00:00:00\",\"2013-05-31T00:00:00\",\"2013-06-30T00:00:00\",\"2013-07-31T00:00:00\",\"2013-08-31T00:00:00\",\"2013-09-30T00:00:00\",\"2013-10-31T00:00:00\",\"2013-11-30T00:00:00\",\"2013-12-31T00:00:00\",\"2014-01-31T00:00:00\",\"2014-02-28T00:00:00\",\"2014-03-31T00:00:00\",\"2014-04-30T00:00:00\",\"2014-05-31T00:00:00\",\"2014-06-30T00:00:00\",\"2014-07-31T00:00:00\",\"2014-08-31T00:00:00\",\"2014-09-30T00:00:00\",\"2014-10-31T00:00:00\",\"2014-11-30T00:00:00\",\"2014-12-31T00:00:00\",\"2015-01-31T00:00:00\",\"2015-02-28T00:00:00\",\"2015-03-31T00:00:00\",\"2015-04-30T00:00:00\",\"2015-05-31T00:00:00\",\"2015-06-30T00:00:00\",\"2015-07-31T00:00:00\",\"2015-08-31T00:00:00\",\"2015-09-30T00:00:00\",\"2015-10-31T00:00:00\",\"2015-11-30T00:00:00\",\"2015-12-31T00:00:00\",\"2016-01-31T00:00:00\",\"2016-02-29T00:00:00\",\"2016-03-31T00:00:00\",\"2016-04-30T00:00:00\",\"2016-05-31T00:00:00\",\"2016-06-30T00:00:00\",\"2016-07-31T00:00:00\",\"2016-08-31T00:00:00\",\"2016-09-30T00:00:00\",\"2016-10-31T00:00:00\",\"2016-11-30T00:00:00\",\"2016-12-31T00:00:00\",\"2017-01-31T00:00:00\",\"2017-02-28T00:00:00\",\"2017-03-31T00:00:00\",\"2017-04-30T00:00:00\",\"2017-05-31T00:00:00\",\"2017-06-30T00:00:00\",\"2017-07-31T00:00:00\",\"2017-08-31T00:00:00\",\"2017-09-30T00:00:00\",\"2017-10-31T00:00:00\",\"2017-11-30T00:00:00\",\"2017-12-31T00:00:00\",\"2018-01-31T00:00:00\",\"2018-02-28T00:00:00\",\"2018-03-31T00:00:00\",\"2018-04-30T00:00:00\",\"2018-05-31T00:00:00\",\"2018-06-30T00:00:00\",\"2018-07-31T00:00:00\",\"2018-08-31T00:00:00\",\"2018-09-30T00:00:00\",\"2018-10-31T00:00:00\",\"2018-11-30T00:00:00\",\"2018-12-31T00:00:00\",\"2019-01-31T00:00:00\",\"2019-02-28T00:00:00\",\"2019-03-31T00:00:00\",\"2019-04-30T00:00:00\",\"2019-05-31T00:00:00\",\"2019-06-30T00:00:00\",\"2019-07-31T00:00:00\",\"2019-08-31T00:00:00\",\"2019-09-30T00:00:00\",\"2019-10-31T00:00:00\",\"2019-11-30T00:00:00\",\"2019-12-31T00:00:00\",\"2020-01-31T00:00:00\",\"2020-02-29T00:00:00\",\"2020-03-31T00:00:00\",\"2020-04-30T00:00:00\",\"2020-05-31T00:00:00\",\"2020-06-30T00:00:00\",\"2020-07-31T00:00:00\",\"2020-08-31T00:00:00\",\"2020-09-30T00:00:00\",\"2020-10-31T00:00:00\",\"2020-11-30T00:00:00\",\"2020-12-31T00:00:00\",\"2021-01-31T00:00:00\",\"2021-02-28T00:00:00\",\"2021-03-31T00:00:00\",\"2021-04-30T00:00:00\",\"2021-05-31T00:00:00\",\"2021-06-30T00:00:00\",\"2021-07-31T00:00:00\",\"2021-08-31T00:00:00\",\"2021-09-30T00:00:00\",\"2021-10-31T00:00:00\",\"2021-11-30T00:00:00\",\"2021-12-31T00:00:00\",\"2022-01-31T00:00:00\",\"2022-02-28T00:00:00\",\"2022-03-31T00:00:00\",\"2022-04-30T00:00:00\",\"2022-05-31T00:00:00\",\"2022-06-30T00:00:00\",\"2022-07-31T00:00:00\",\"2022-08-31T00:00:00\",\"2022-09-30T00:00:00\",\"2022-10-31T00:00:00\",\"2022-11-30T00:00:00\",\"2022-12-31T00:00:00\"],\"y\":[null,9736.738680586406,10790.463213992136,10877.27223141581,10843.466724944788,11127.600122589687,10972.603157263211,10445.328990874243,10580.523414997744,11403.126447773058,10500.922001635805,10357.429614425677,11070.99917907464,11698.090502694535,11594.9152861697,11912.666305556135,11273.544225265156,11212.402990221846,11279.608207648072,11479.160676990175,12263.451074301358,12172.880603095107,12997.515065601787,13178.746277257076,13444.544376479229,12749.245865000375,13049.655821452578,13672.282475615173,14009.031453633479,13540.489677801119,14163.966398584836,13984.66408963687,14455.792316048592,15876.447747939052,16020.766867250995,16539.397123283074,15935.396509756205,16634.35406806026,17914.801835609727,18113.87495860588,19740.24294255105,21051.87344021994,21273.218214397104,22694.642431922668,23449.80463586616,24026.004892203087,24661.94681970695,24468.184330992015,26661.546444784817,26730.638443461674,25248.70979697667,24186.424471657483,24742.688765558196,24432.293871127757,25613.874071519866,24294.990998216206,23598.361490775696,23701.226945027945,23047.520434604372,23230.598848094167,22198.26355042265,20891.245601783263,22475.227596573433,23177.82009467064,23731.209800326265,24511.464003277426,25986.728508761193,27027.910895757497,26840.620273587963,27482.235460050368,26081.70161124184,25674.88881582916,26591.97921266362,27437.032629226527,28160.851958002862,28802.76827646157,29524.201311419965,29318.728292015556,30801.95288648161,31309.58007961669,31272.873246832867,32721.815608397847,33136.80122220085,34699.05865567158,35330.41877509234,34153.678948424815,33102.54374687679,35467.88867526764,34825.551268257426,34047.49248610155,35317.035261046825,36899.48899464679,34697.45598491549,32607.288586092138,34154.09971868837,34398.46308586718,33643.19388968689,33634.822899101855,34927.669150460024,35774.96702693478,35838.67197037385,36224.9795525499,33270.289783583976,33917.70149803928,35777.40541575903,38245.09793575153,37938.326913786426,38300.50802938952,38122.462578495695,36165.92320572785,30287.93474907123,35666.17249404077,36026.682018833315,37414.699545033145,41123.65575101213,43738.69269553758,42249.99422697927,43274.96223789918,49323.928855312886,53366.48633362769,53376.502545644944,58862.75309148399,59600.76070247213,62188.32068721531,65395.76799264056,66425.86438425514,68122.3044073363,73239.05760424674,74966.22769558463,75217.02839400206,71021.44097619569,72786.60133830746,72274.10464240731,69027.55160281011,70847.41226318132,70394.33224471149,68896.03363551389,66415.16093468327,69924.8471555242,72749.87959923636,70522.81404339189,71412.72278440994,73243.01272619203,70814.29500661678],\"type\":\"scatter\"},{\"mode\":\"lines\",\"name\":\"Nifty 50 Portfolio Value\",\"x\":[\"2011-01-31T00:00:00\",\"2011-02-28T00:00:00\",\"2011-03-31T00:00:00\",\"2011-04-30T00:00:00\",\"2011-05-31T00:00:00\",\"2011-06-30T00:00:00\",\"2011-07-31T00:00:00\",\"2011-08-31T00:00:00\",\"2011-09-30T00:00:00\",\"2011-10-31T00:00:00\",\"2011-11-30T00:00:00\",\"2011-12-31T00:00:00\",\"2012-01-31T00:00:00\",\"2012-02-29T00:00:00\",\"2012-03-31T00:00:00\",\"2012-04-30T00:00:00\",\"2012-05-31T00:00:00\",\"2012-06-30T00:00:00\",\"2012-07-31T00:00:00\",\"2012-08-31T00:00:00\",\"2012-09-30T00:00:00\",\"2012-10-31T00:00:00\",\"2012-11-30T00:00:00\",\"2012-12-31T00:00:00\",\"2013-01-31T00:00:00\",\"2013-02-28T00:00:00\",\"2013-03-31T00:00:00\",\"2013-04-30T00:00:00\",\"2013-05-31T00:00:00\",\"2013-06-30T00:00:00\",\"2013-07-31T00:00:00\",\"2013-08-31T00:00:00\",\"2013-09-30T00:00:00\",\"2013-10-31T00:00:00\",\"2013-11-30T00:00:00\",\"2013-12-31T00:00:00\",\"2014-01-31T00:00:00\",\"2014-02-28T00:00:00\",\"2014-03-31T00:00:00\",\"2014-04-30T00:00:00\",\"2014-05-31T00:00:00\",\"2014-06-30T00:00:00\",\"2014-07-31T00:00:00\",\"2014-08-31T00:00:00\",\"2014-09-30T00:00:00\",\"2014-10-31T00:00:00\",\"2014-11-30T00:00:00\",\"2014-12-31T00:00:00\",\"2015-01-31T00:00:00\",\"2015-02-28T00:00:00\",\"2015-03-31T00:00:00\",\"2015-04-30T00:00:00\",\"2015-05-31T00:00:00\",\"2015-06-30T00:00:00\",\"2015-07-31T00:00:00\",\"2015-08-31T00:00:00\",\"2015-09-30T00:00:00\",\"2015-10-31T00:00:00\",\"2015-11-30T00:00:00\",\"2015-12-31T00:00:00\",\"2016-01-31T00:00:00\",\"2016-02-29T00:00:00\",\"2016-03-31T00:00:00\",\"2016-04-30T00:00:00\",\"2016-05-31T00:00:00\",\"2016-06-30T00:00:00\",\"2016-07-31T00:00:00\",\"2016-08-31T00:00:00\",\"2016-09-30T00:00:00\",\"2016-10-31T00:00:00\",\"2016-11-30T00:00:00\",\"2016-12-31T00:00:00\",\"2017-01-31T00:00:00\",\"2017-02-28T00:00:00\",\"2017-03-31T00:00:00\",\"2017-04-30T00:00:00\",\"2017-05-31T00:00:00\",\"2017-06-30T00:00:00\",\"2017-07-31T00:00:00\",\"2017-08-31T00:00:00\",\"2017-09-30T00:00:00\",\"2017-10-31T00:00:00\",\"2017-11-30T00:00:00\",\"2017-12-31T00:00:00\",\"2018-01-31T00:00:00\",\"2018-02-28T00:00:00\",\"2018-03-31T00:00:00\",\"2018-04-30T00:00:00\",\"2018-05-31T00:00:00\",\"2018-06-30T00:00:00\",\"2018-07-31T00:00:00\",\"2018-08-31T00:00:00\",\"2018-09-30T00:00:00\",\"2018-10-31T00:00:00\",\"2018-11-30T00:00:00\",\"2018-12-31T00:00:00\",\"2019-01-31T00:00:00\",\"2019-02-28T00:00:00\",\"2019-03-31T00:00:00\",\"2019-04-30T00:00:00\",\"2019-05-31T00:00:00\",\"2019-06-30T00:00:00\",\"2019-07-31T00:00:00\",\"2019-08-31T00:00:00\",\"2019-09-30T00:00:00\",\"2019-10-31T00:00:00\",\"2019-11-30T00:00:00\",\"2019-12-31T00:00:00\",\"2020-01-31T00:00:00\",\"2020-02-29T00:00:00\",\"2020-03-31T00:00:00\",\"2020-04-30T00:00:00\",\"2020-05-31T00:00:00\",\"2020-06-30T00:00:00\",\"2020-07-31T00:00:00\",\"2020-08-31T00:00:00\",\"2020-09-30T00:00:00\",\"2020-10-31T00:00:00\",\"2020-11-30T00:00:00\",\"2020-12-31T00:00:00\",\"2021-01-31T00:00:00\",\"2021-02-28T00:00:00\",\"2021-03-31T00:00:00\",\"2021-04-30T00:00:00\",\"2021-05-31T00:00:00\",\"2021-06-30T00:00:00\",\"2021-07-31T00:00:00\",\"2021-08-31T00:00:00\",\"2021-09-30T00:00:00\",\"2021-10-31T00:00:00\",\"2021-11-30T00:00:00\",\"2021-12-31T00:00:00\",\"2022-01-31T00:00:00\",\"2022-02-28T00:00:00\",\"2022-03-31T00:00:00\",\"2022-04-30T00:00:00\",\"2022-05-31T00:00:00\",\"2022-06-30T00:00:00\",\"2022-07-31T00:00:00\",\"2022-08-31T00:00:00\",\"2022-09-30T00:00:00\",\"2022-10-31T00:00:00\",\"2022-11-30T00:00:00\",\"2022-12-31T00:00:00\"],\"y\":[10000.0,9686.427458896853,10624.879622211904,10480.461366373034,9999.724080793854,10318.190400754165,10025.312429999683,9147.89542890519,9032.418524286115,9807.920668940444,8879.4667135058,8449.524952974969,9692.848741648213,10050.496854957824,9884.021352890073,9794.512417855994,9177.342732593956,9897.55373395203,9803.026648258296,9859.442789011786,10705.311011294756,10558.729887668236,11021.654764978857,11064.598036628016,11284.153844657772,10717.93288221111,10699.489340769833,11135.297911106893,11229.308228067299,10989.162561448542,10817.651500610717,10347.08341403374,10828.643429760683,11811.765702105384,11616.422192909458,11823.510647308516,11483.250495024251,11791.075760337495,12471.740711796028,12460.105777364617,13256.877626044094,13784.405329611163,13928.860262862896,14230.688062409377,14243.825159598913,14692.550048345845,15012.236908122848,14656.460347487679,15291.76065162074,15332.286957024298,14932.495417563094,14567.991825524465,14876.187621680427,14798.93709835138,14995.327860584755,14337.224377698418,14309.123687857877,14456.187940496511,14294.331946238348,14308.320286437145,13826.589317798276,13064.381075786418,14139.727779558561,14283.68506239427,14678.982140905055,14835.413925829376,15258.62891180265,15429.607895784244,15230.375234569798,15261.555283874513,14782.856511010425,14735.801741343575,15194.522952415675,15566.312063822828,15897.577440151776,16039.612926934717,16380.53994470787,16276.239973940039,16860.42759898617,16702.44640903952,16572.07528596167,17130.582342261023,17025.36043089404,17322.772946780475,17794.726369422995,17309.71990709203,16948.379157746167,17566.9948987511,17564.015929943525,17543.663582833542,18143.049643536768,18428.348811414195,17786.210371546462,17288.654848928803,17760.56135255737,17747.505802588403,17718.415386486133,17682.915089079965,18403.32277960579,18557.29891670605,18705.960117197552,18593.612180884942,18024.55783580151,17939.33567354211,18348.65252230495,18699.86760724613,18850.236252399856,18943.467777191086,18773.88941460142,18138.25718095985,15813.62040545602,17281.6212087185,16998.047769981382,17751.468664319505,18500.20010274936,18783.80620486597,18660.90811897135,19011.962875601937,20151.375505454198,20932.31751651502,20684.029290345192,21340.118069538177,21451.30819445542,21410.737911796925,22061.20180085602,22150.210321180315,22176.638972827743,23045.22051702571,23328.86838130175,23359.234792538915,22969.655349387285,23188.019132160654,23179.83592925661,22864.983591405406,23264.443867917165,23057.05514563371,22754.17634899953,22269.206456321263,23142.449909371753,23492.74832631404,23118.324141451398,23655.255718463035,24069.502963656887,23721.36528538341],\"type\":\"scatter\"}],                        {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"font\":{\"family\":\"Courier New, monospace\",\"size\":18,\"color\":\"RebeccaPurple\"},\"title\":{\"text\":\"Portfolio Returns Over Time\"},\"xaxis\":{\"title\":{\"text\":\"Date\"}},\"yaxis\":{\"title\":{\"text\":\"Portfolio Value (in Rupees)\"}},\"legend\":{\"title\":{\"text\":\"Legend\"}}},                        {\"responsive\": true}                    ).then(function(){\n",
              "                            \n",
              "var gd = document.getElementById('121889aa-4caf-4d70-9875-5d302762fe1a');\n",
              "var x = new MutationObserver(function (mutations, observer) {{\n",
              "        var display = window.getComputedStyle(gd).display;\n",
              "        if (!display || display === 'none') {{\n",
              "            console.log([gd, 'removed!']);\n",
              "            Plotly.purge(gd);\n",
              "            observer.disconnect();\n",
              "        }}\n",
              "}});\n",
              "\n",
              "// Listen for the removal of the full notebook cells\n",
              "var notebookContainer = gd.closest('#notebook-container');\n",
              "if (notebookContainer) {{\n",
              "    x.observe(notebookContainer, {childList: true});\n",
              "}}\n",
              "\n",
              "// Listen for the clearing of the current output cell\n",
              "var outputEl = gd.closest('.output');\n",
              "if (outputEl) {{\n",
              "    x.observe(outputEl, {childList: true});\n",
              "}}\n",
              "\n",
              "                        })                };                            </script>        </div>\n",
              "</body>\n",
              "</html>"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "('portfolio_chart.png', 'CAGR: 10000.00%')"
            ]
          },
          "metadata": {},
          "execution_count": 81
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# CONCLUSION:"
      ],
      "metadata": {
        "id": "2n3BRT7fv0oR"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "**We have seen our portfolio outperforms NIFTY50 in terms of CAGR. But as we have selected the top stocks from 2024, this may have given us an edge over the other stocks. In the future calculations top 50 stocks should be selected from the begining of our testing period.**"
      ],
      "metadata": {
        "id": "SMHMa1_Xv3Ij"
      }
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}