diff --git a/example.py b/example.py index 16a80ce..54a1e48 100644 --- a/example.py +++ b/example.py @@ -33,7 +33,10 @@ } # Generate the HTML report -reports.html(returns, output=output_file_path, parameters=example_parameters) +html_result = reports.html(returns, output=output_file_path, parameters=example_parameters) + +# Print the HTML result +print(html_result) # Open the HTML file in a browser to visually inspect the output os.system(f"open {output_file_path}") diff --git a/quantstats_lumi/reports.py b/quantstats_lumi/reports.py index d8332f4..705bef0 100644 --- a/quantstats_lumi/reports.py +++ b/quantstats_lumi/reports.py @@ -579,6 +579,11 @@ def html( with open(output, "w", encoding="utf-8") as f: f.write(tpl) + print(f"HTML report saved to: {output}") + + # Return the metrics + return mtrx + def full( returns, @@ -733,7 +738,6 @@ def full( active=active, ) - def basic( returns, benchmark=None, @@ -1160,7 +1164,17 @@ def metrics( ) * pct ) - metrics["Win Days %%"] = _stats.win_rate(df, prepare_returns=False) * pct + + # Get the win rate + win_rate = _stats.win_rate(df, prepare_returns=False) + + # Number of win days in total + metrics["Win Days"] = win_rate * len(df) + + # Number of loss days in total + metrics["Loss Days"] = len(df) - metrics["Win Days"] + + metrics["Win Days %%"] = win_rate * pct metrics["Win Month %%"] = ( _stats.win_rate( df, compounded=compounded, aggregate="ME", prepare_returns=False diff --git a/quantstats_lumi/version.py b/quantstats_lumi/version.py index 63fe829..5189669 100644 --- a/quantstats_lumi/version.py +++ b/quantstats_lumi/version.py @@ -1 +1 @@ -version = "0.3.1" +version = "0.3.2" diff --git a/report.html b/report.html index ce20582..c18b5be 100644 --- a/report.html +++ b/report.html @@ -284,7 +284,7 @@

Strategy Tearsheet
31 Jan, 2022 - 31 May, 2022

Generated by QuantStats (v. - 0.3.0)

+ 0.3.1)
@@ -298,7 +298,7 @@

Generated by - 2024-06-15T00:16:01.211849 + 2024-07-21T22:33:46.482982 image/svg+xml @@ -334,7 +334,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -427,7 +427,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -476,7 +476,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -533,7 +533,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -555,7 +555,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -598,7 +598,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -620,7 +620,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -642,7 +642,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -664,7 +664,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -723,7 +723,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -786,7 +786,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -800,7 +800,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -814,7 +814,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -828,7 +828,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -842,7 +842,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -856,7 +856,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -870,7 +870,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -884,7 +884,7 @@

Generated by +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #808080; stroke-linecap: round"/> +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke: #348dc1; stroke-width: 1.5; stroke-linecap: round"/> +" clip-path="url(#p3f65b8309d)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/> @@ -1223,7 +1223,7 @@

Generated by - + @@ -1231,1065 +1231,7 @@

Generated by -
- - - - - - - 2024-06-15T00:16:01.279232 - image/svg+xml - - - Matplotlib v3.8.4, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
Generated by - 2024-06-15T00:16:01.325172 + 2024-07-21T22:33:46.527977 image/svg+xml @@ -2335,7 +1277,7 @@

Generated by +" clip-path="url(#p311d568d5a)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -2405,7 +1347,7 @@

Generated by +" clip-path="url(#p311d568d5a)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -2468,7 +1410,7 @@

Generated by +" clip-path="url(#p311d568d5a)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -2496,7 +1438,7 @@

Generated by +" clip-path="url(#p311d568d5a)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -2510,7 +1452,7 @@

Generated by +" clip-path="url(#p311d568d5a)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -2559,7 +1501,7 @@

Generated by +" clip-path="url(#p311d568d5a)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -2597,17 +1539,17 @@

Generated by +" clip-path="url(#p311d568d5a)" style="fill: #348dc1; stroke: #ffffff; stroke-linejoin: miter"/> +" clip-path="url(#p311d568d5a)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #ff0000; stroke-width: 1.5"/> +" clip-path="url(#p311d568d5a)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/> @@ -2850,7 +1792,7 @@

Generated by - + @@ -2864,7 +1806,7 @@

Generated by - 2024-06-15T00:16:01.464335 + 2024-07-21T22:33:46.663456 image/svg+xml @@ -2900,7 +1842,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3004,7 +1946,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3040,7 +1982,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3082,7 +2024,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3123,7 +2065,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3137,7 +2079,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3186,7 +2128,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3200,7 +2142,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3258,7 +2200,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3271,7 +2213,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3312,7 +2254,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3326,7 +2268,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3356,7 +2298,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3385,7 +2327,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3400,7 +2342,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -3593,7 +2535,7 @@

Generated by +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: #348dc1; fill-opacity: 0.7; stroke: #ffffff; stroke-width: 0.611777; stroke-linejoin: miter"/> +" clip-path="url(#pbed0259779)" style="fill: none; stroke: #000000; stroke-width: 1.5; stroke-linecap: round"/> +" clip-path="url(#pbed0259779)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #ff0000; stroke-width: 1.5"/> @@ -4068,7 +3010,7 @@

Generated by - + @@ -4082,7 +3024,7 @@

Generated by - 2024-06-15T00:16:01.521754 + 2024-07-21T22:33:46.749234 image/svg+xml @@ -4118,7 +3060,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4211,7 +3153,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4260,7 +3202,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4317,7 +3259,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4339,7 +3281,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4382,7 +3324,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4404,7 +3346,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4426,7 +3368,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4448,7 +3390,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4507,7 +3449,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4571,7 +3513,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4585,7 +3527,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -4599,7 +3541,7 @@

Generated by +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #808080; stroke-linecap: round"/> +" clip-path="url(#pbe485080b3)" style="fill: none; stroke: #348dc1; stroke-width: 0.5; stroke-linecap: round"/> +" clip-path="url(#pbe485080b3)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/> @@ -5028,7 +3970,7 @@

Generated by - + @@ -5043,7 +3985,7 @@

Generated by - 2024-06-15T00:16:01.585090 + 2024-07-21T22:33:46.814811 image/svg+xml @@ -5079,7 +4021,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5147,7 +4089,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5177,7 +4119,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5193,7 +4135,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5244,7 +4186,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5281,7 +4223,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5324,7 +4266,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5375,7 +4317,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5407,7 +4349,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5465,7 +4407,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5518,7 +4460,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5536,7 +4478,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5569,7 +4511,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5586,7 +4528,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5602,7 +4544,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5618,7 +4560,7 @@

Generated by +" clip-path="url(#pe3791f6750)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -5633,12 +4575,12 @@

Generated by - + +" clip-path="url(#pe3791f6750)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/> @@ -6037,7 +4979,7 @@

Generated by - + @@ -6051,7 +4993,7 @@

Generated by - 2024-06-15T00:16:01.655376 + 2024-07-21T22:33:46.880284 image/svg+xml @@ -6087,7 +5029,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6155,7 +5097,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6185,7 +5127,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6201,7 +5143,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6252,7 +5194,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6289,7 +5231,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6332,7 +5274,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6383,7 +5325,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6415,7 +5357,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6473,7 +5415,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6526,7 +5468,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6544,7 +5486,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6577,7 +5519,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6594,7 +5536,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6610,7 +5552,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6626,7 +5568,7 @@

Generated by +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -6641,12 +5583,12 @@

Generated by - + +" clip-path="url(#pa0179e4c87)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/> @@ -7111,7 +6053,7 @@

Generated by - + @@ -7125,7 +6067,7 @@

Generated by - 2024-06-15T00:16:01.720132 + 2024-07-21T22:33:46.946687 image/svg+xml @@ -7161,7 +6103,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7229,7 +6171,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7259,7 +6201,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7275,7 +6217,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7326,7 +6268,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7363,7 +6305,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7406,7 +6348,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7457,7 +6399,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7489,7 +6431,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7547,7 +6489,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7600,7 +6542,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7618,7 +6560,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7651,7 +6593,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7668,7 +6610,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7684,7 +6626,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7700,7 +6642,7 @@

Generated by +" clip-path="url(#pb2720a4648)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -7715,12 +6657,12 @@

Generated by - + +" clip-path="url(#pb2720a4648)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/> @@ -8097,7 +7039,7 @@

Generated by - + @@ -8111,7 +7053,7 @@

Generated by - 2024-06-15T00:16:01.789857 + 2024-07-21T22:33:47.020904 image/svg+xml @@ -8137,8 +7079,8 @@

Generated by @@ -8146,8 +7088,8 @@

Generated by +L 76.826057 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8239,8 +7181,8 @@

Generated by +L 131.136867 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8288,8 +7230,8 @@

Generated by +L 185.447676 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8345,8 +7287,8 @@

Generated by +L 239.758486 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8367,8 +7309,8 @@

Generated by +L 305.707326 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8410,8 +7352,8 @@

Generated by +L 360.018136 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8432,8 +7374,8 @@

Generated by +L 422.087632 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8454,8 +7396,8 @@

Generated by +L 476.398442 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8476,8 +7418,8 @@

Generated by +L 542.347282 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -8534,13 +7476,13 @@

Generated by - + - - + + - - - + + - + - - - + + + - + - - - + + + + + + + + + + + + + + + @@ -8627,33 +7582,33 @@

Generated by +" clip-path="url(#p26090cb1cc)" style="fill: #ff0000; opacity: 0.1; stroke: #ff0000; stroke-linejoin: miter"/> +" clip-path="url(#p26090cb1cc)" style="fill: #ff0000; opacity: 0.1; stroke: #ff0000; stroke-linejoin: miter"/> - - + +L 301.827983 87.536761 +L 418.208289 134.266108 +L 538.467939 41.742 +" clip-path="url(#p26090cb1cc)" style="fill: none; stroke: #348dc1; stroke-width: 1.5; stroke-linecap: round"/> - - + + - + @@ -9117,8 +8072,8 @@

Generated by - - + + @@ -9131,7 +8086,7 @@

Generated by - 2024-06-15T00:16:01.854880 + 2024-07-21T22:33:47.086255 image/svg+xml @@ -9167,7 +8122,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9260,7 +8215,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9309,7 +8264,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9366,7 +8321,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9388,7 +8343,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9431,7 +8386,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9453,7 +8408,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9475,7 +8430,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9497,7 +8452,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9556,7 +8511,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9620,7 +8575,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9635,7 +8590,7 @@

Generated by +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -9648,7 +8603,7 @@

Generated by - - - + + +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #808080; stroke-linecap: round"/> +" clip-path="url(#p5df858af6e)" style="fill: none; stroke: #348dc1; stroke-linecap: round"/> +" clip-path="url(#p5df858af6e)" style="fill: none; stroke-dasharray: 7.4,3.2; stroke-dashoffset: 0; stroke: #ff0000; stroke-width: 2"/> +" clip-path="url(#p5df858af6e)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/> @@ -9961,7 +8916,7 @@

Generated by - + @@ -9975,7 +8930,7 @@

Generated by - 2024-06-15T00:16:01.910417 + 2024-07-21T22:33:47.141336 image/svg+xml @@ -10011,7 +8966,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10076,7 +9031,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10161,7 +9116,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10228,7 +9183,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10269,7 +9224,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10300,7 +9255,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10337,7 +9292,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10363,7 +9318,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10412,7 +9367,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10467,7 +9422,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10545,7 +9500,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10574,7 +9529,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10620,7 +9575,7 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -10691,73 +9646,73 @@

Generated by +" clip-path="url(#p6ff7917626)" style="fill: #4bb05c; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #ea5739; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #006837; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #fdbf6f; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #4bb05c; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #feffbe; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #feffbe; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #feffbe; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #feffbe; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #feffbe; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #feffbe; stroke: #ffffff; stroke-width: 0.5"/> +" clip-path="url(#p6ff7917626)" style="fill: #feffbe; stroke: #ffffff; stroke-width: 0.5"/> @@ -11426,7 +10381,7 @@

Generated by - + @@ -11440,7 +10395,7 @@

Generated by - 2024-06-15T00:16:01.960949 + 2024-07-21T22:33:47.192082 image/svg+xml @@ -11916,7 +10871,7 @@

Generated by +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -12012,7 +10967,7 @@

Generated by +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -12053,7 +11008,7 @@

Generated by +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #dddddd; stroke-width: 0.5; stroke-linecap: round"/> @@ -12106,27 +11061,27 @@

Generated by +" clip-path="url(#p18ed97a456)" style="fill: #edd589; stroke: #494949; stroke-linejoin: miter"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949; stroke-linecap: round"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949; stroke-linecap: round"/> @@ -12136,31 +11091,31 @@

Generated by +" clip-path="url(#p18ed97a456)" style="fill: #4688af; stroke: #494949; stroke-linejoin: miter"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949; stroke-linecap: round"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949; stroke-linecap: round"/> - - - + + @@ -12183,27 +11138,27 @@

Generated by +" clip-path="url(#p18ed97a456)" style="fill: #ad5e72; stroke: #494949; stroke-linejoin: miter"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949; stroke-linecap: round"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949; stroke-linecap: round"/> @@ -12213,48 +11168,48 @@

Generated by +" clip-path="url(#p18ed97a456)" style="fill: #5a9984; stroke: #494949; stroke-linejoin: miter"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949; stroke-linecap: round"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949; stroke-linecap: round"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> +" clip-path="url(#p18ed97a456)" style="fill: none; stroke: #494949"/> @@ -12647,7 +11602,7 @@

Generated by - + @@ -12769,6 +11724,8 @@

Key Performance Metrics


Avg. Up Month2.33% Avg. Down Month-1.5% +Win Days3.0 +Loss Days2.0 Win Days60.0% Win Month60.0% Win Quarter100.0%