Skip to content

Instantly share code, notes, and snippets.

@atifaziz
Last active February 9, 2024 15:58
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atifaziz/8368a14c4e7b14885c92a2f76cafd72a to your computer and use it in GitHub Desktop.
Save atifaziz/8368a14c4e7b14885c92a2f76cafd72a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# A Practical Tour of [MoreLINQ]\n",
"\n",
"🤝 This content is distributed under the terms of [CC BY-SA 4.0].\n",
"\n",
"[MoreLINQ] is a .NET library that's been around since 2008. To date, it has added over 100 extensions to [LINQ to Objects], some of which have found their way into .NET proper! 🎉\n",
"\n",
"This notebook demonstrates a number of [MoreLINQ] extensions and how to apply them in actual practice. For illustration, we'll be implementing a [trading strategy] to see how well it performs against the historical price data for the Microsoft stock ticker symbol [MSFT]. Don't worry, you don't need to be an expert or interested in trading. Everyone knows the basic idea that to make profit, you need to sell something for a higher price than you bought it at, but to do so _systematically_ with a financial asset and perhaps even automatically, you need a _strategy_. That is, when will you buy and when will you sell? We can use a 20-day (simple) [moving average] of the stock price as a very simple indication of its trend (up or down) and buy when the price is below the moving average and sell when it goes above. They say history doesn't always repeat, but it often rhymes, so when you have a strategy in mind, it's a good idea to test how well it would have performed if you could go back in time using historical price data and play by the rules of your strategy to see if you end up in profit or loss. In trading, this is called [backtesting] and which is what we'll be doing here.\n",
"\n",
"**NOTE!** ⚠️ This is for education purposes only and the trading strategy discussed in this notebook is *extremely naïve* and for illustration purposes only.\n",
"\n",
"This notebook can be loaded and the code explored _interactively_ in [Visual Studio Code] (VS Code). See [Polyglot Notebooks in VS Code] for more. Some data structures in the display cells may be more condensely formatted and therefore easier to read in the editor than online, in Markdown.\n",
"\n",
"[MoreLINQ]: https://morelinq.github.io/\n",
"[LINQ to Objects]: https://learn.microsoft.com/en-us/dotnet/csharp/linq/query-a-collection-of-objects\n",
"[MSFT]: https://finance.yahoo.com/quote/MSFT/\n",
"[backtesting]: https://www.investopedia.com/terms/b/backtesting.asp\n",
"[trading strategy]: https://www.investopedia.com/terms/t/trading-strategy.asp\n",
"[moving average]: https://www.investopedia.com/terms/m/movingaverage.asp\n",
"[Visual Studio Code]: https://code.visualstudio.com/\n",
"[Polyglot Notebooks in VS Code]: https://code.visualstudio.com/docs/languages/polyglot\n",
"[CC BY-SA 4.0]: https://creativecommons.org/licenses/by-sa/4.0/"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's start by installing the [MoreLINQ package][nupkg] and importing the `MoreLinq` namespace along with some others we'll be needing too.\n",
"\n",
"[nupkg]: https://www.nuget.org/packages/morelinq"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div><div></div><div></div><div><strong>Installed Packages</strong><ul><li><span>morelinq, 4.1.0</span></li></ul></div></div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
".NETCoreApp,Version=v8.0"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#r \"nuget: morelinq, 4.1.0\"\n",
"\n",
"using System.Globalization;\n",
"using System.Net.Http;\n",
"using System.Text.RegularExpressions;\n",
"using MoreLinq;\n",
"using Microsoft.DotNet.Interactive.Formatting.TabularData;\n",
"\n",
"// For informational purposes:\n",
"AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will be using and displaying [`DateOnly`] values (introduced with .NET 6) a lot, since we'll be mostly concerned with days, so let's register a compact formatting for it for this notebook (for more on this topic, see “[Replacing the default formatting for a type]” in the [.NET Interactive] documentation):\n",
"\n",
"[`DateOnly`]: https://learn.microsoft.com/en-us/dotnet/api/system.dateonly\n",
"[Replacing the default formatting for a type]: https://github.com/dotnet/interactive/blob/v1.0.4605020/docs/formatting.md#replacing-the-default-formatting-for-a-type\n",
"[.NET Interactive]: https://github.com/dotnet/interactive"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [],
"source": [
"using Microsoft.DotNet.Interactive.Formatting;\n",
"\n",
"Formatter.Register((DateOnly v) => $\"\"\"\n",
" <time datetime=\"{v:yyyy-MM-dd}\">{v:MMM dd, yyyy}</time>\n",
" \"\"\",\n",
" HtmlFormatter.MimeType);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Later, in many of the code cells of this notebook, you'll see calls to `ToTabularDataResource()`. This is an extension method supplied by .NET Interactive and renders data in a tabular fashion. It's not strictly required, but provides a better presentation for large and inherently tabular data structures.\n",
"\n",
"We're going to be buying and selling shares, so let's begin by defining an `enum` for those actions:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [],
"source": [
"enum Trade { Buy, Sell }"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, let's download the Microsoft stock price (ticker symbol [MSFT]) history for the last 5 years from [Yahoo Finance], which is what we'll be using for backtesting.\n",
"\n",
"[Yahoo Finance]: https://finance.yahoo.com/\n",
"[MSFT]: https://finance.yahoo.com/quote/MSFT?p=MSFT&.tsrc=fin-srch"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [],
"source": [
"const string ticker = \"MSFT\";\n",
"const int years = 5;\n",
"\n",
"var endDate = DateTime.SpecifyKind(new(2023, 10, 1), DateTimeKind.Utc);\n",
"var startDate = endDate.AddYears(-years);\n",
"var startTimestamp = new DateTimeOffset(startDate).ToUnixTimeSeconds();\n",
"var endTimestamp = new DateTimeOffset(endDate).ToUnixTimeSeconds();\n",
"var url = new Uri(FormattableString.Invariant(@$\"https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1={startTimestamp}&period2={endTimestamp}&interval=1d&events=history&includeAdjustedClose=true\"));\n",
"string csv;\n",
"using (var client = new HttpClient())\n",
" csv = await client.GetStringAsync(url);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The response is CSV data, so let's parse that by first breaking it into lines delimited by either `CRLF` or `LF`:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [],
"source": [
"var lines = Regex.Split(csv, @\"\\r?\\n\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look at the headers by inspecting the first line:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Date,Open,High,Low,Close,Adj Close,Volume"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"lines.First()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So there are 7 columns in the data:\n",
"\n",
"| Column | Description |\n",
"| :------------ | :----------------------------------------------------------------------------- |\n",
"| `Date` | The trading day |\n",
"| `Open` | Opening price at start of the trading day |\n",
"| `High` | Highest price on the trading day |\n",
"| `Low` | Lowest price on the trading day |\n",
"| `Close` | Price at the close/end of the trading day |\n",
"| [`Adj Close`] | Closing price after adjustments for applicable splits & dividend distributions |\n",
"| `Volume` | Total quantity of shared traded |\n",
"\n",
"[`Adj Close`]: https://help.yahoo.com/kb/adjusted-close-sln28256.html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's split each row into those fields. We will skip the header line, using `Skip(1)`, and assume that the columns are always given in the above order. We will use `Split` to break-up each field by the comma (`,`) as our delimiter, but out of precation, we will only consider lines with exactly 7 fields."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-01, 114.750000, 115.680000, 114.730003, 115.610001, 109.310699, 18883100 ]</pre></div></td></tr><tr><td>1</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-02, 115.300003, 115.839996, 114.440002, 115.150002, 108.875763, 20787200 ]</pre></div></td></tr><tr><td>2</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-03, 115.419998, 116.180000, 114.930000, 115.169998, 108.894669, 16648000 ]</pre></div></td></tr><tr><td>3</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-04, 114.610001, 114.760002, 111.629997, 112.790001, 106.644341, 34821700 ]</pre></div></td></tr><tr><td>4</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-05, 112.629997, 113.169998, 110.639999, 112.129997, 106.020332, 29068900 ]</pre></div></td></tr><tr><td>5</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-08, 111.660004, 112.029999, 109.339996, 110.849998, 104.810051, 29640600 ]</pre></div></td></tr><tr><td>6</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-09, 111.139999, 113.080002, 110.800003, 112.260002, 106.143227, 26198600 ]</pre></div></td></tr><tr><td>7</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-10, 111.239998, 111.500000, 105.790001, 106.160004, 100.375595, 61376300 ]</pre></div></td></tr><tr><td>8</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-11, 105.349998, 108.930000, 104.199997, 105.910004, 100.139244, 63904300 ]</pre></div></td></tr><tr><td>9</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-12, 109.010002, 111.239998, 107.120003, 109.570000, 103.599815, 47742100 ]</pre></div></td></tr><tr><td>10</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-15, 108.910004, 109.480003, 106.949997, 107.599998, 101.737137, 32068100 ]</pre></div></td></tr><tr><td>11</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-16, 109.540001, 111.410004, 108.949997, 111.000000, 104.951889, 31610200 ]</pre></div></td></tr><tr><td>12</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-17, 111.680000, 111.809998, 109.550003, 110.709999, 104.677689, 26548200 ]</pre></div></td></tr><tr><td>13</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-18, 110.099998, 110.529999, 107.830002, 108.500000, 102.588112, 32506200 ]</pre></div></td></tr><tr><td>14</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-19, 108.930000, 110.860001, 108.209999, 108.660004, 102.739380, 32785500 ]</pre></div></td></tr><tr><td>15</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-22, 109.320000, 110.540001, 108.239998, 109.629997, 103.656532, 26545600 ]</pre></div></td></tr><tr><td>16</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-23, 107.769997, 108.970001, 105.110001, 108.099998, 102.209915, 43770400 ]</pre></div></td></tr><tr><td>17</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-24, 108.410004, 108.489998, 101.589996, 102.320000, 96.744835, 63897800 ]</pre></div></td></tr><tr><td>18</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-25, 106.550003, 109.269997, 106.150002, 108.300003, 102.399002, 61646800 ]</pre></div></td></tr><tr><td>19</td><td><div class=\"dni-plaintext\"><pre>[ 2018-10-26, 105.690002, 108.750000, 104.760002, 106.959999, 101.132019, 55523100 ]</pre></div></td></tr><tr><td colspan=\"2\"><i>... (more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var rows =\n",
" from line in lines.Skip(1) // skip header line\n",
" select line.Split(',', 7) // split row/line into fields\n",
" into fields\n",
" where fields.Length is 7 // Filter out incomplete rows\n",
" select fields;\n",
"\n",
"rows"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, let's turn each row into a strong-typed object with the data we need, which will be just the date and the opening price. We will use our first extension from MoreLINQ called [`Fold`] that enables _folding_ the elements of a sequence into a single value. It's like [`Aggregate`] from LINQ except `Fold` is designed to be used for short sequences, containing up to 16 values. The arity of the lambda supplied to `Fold` determines the expected elements in the sequence (any more or less causes an exception so it has strict semantics).\n",
"\n",
"[`Fold`]: https://morelinq.github.io/4.0/ref/api/html/Overload_MoreLinq_MoreEnumerable_Fold.htm\n",
"[`Aggregate`]: https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.aggregate#system-linq-enumerable-aggregate-1(system-collections-generic-ienumerable((-0))-system-func((-0-0-0)))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price\r\n",
"10/1/2018,114.750000\r\n",
"10/2/2018,115.300003\r\n",
"10/3/2018,115.419998\r\n",
"10/4/2018,114.610001\r\n",
"10/5/2018,112.629997\r\n",
"10/8/2018,111.660004\r\n",
"10/9/2018,111.139999\r\n",
"10/10/2018,111.239998\r\n",
"10/11/2018,105.349998\r\n",
"10/12/2018,109.010002\r\n",
"10/15/2018,108.910004\r\n",
"10/16/2018,109.540001\r\n",
"10/17/2018,111.680000\r\n",
"10/18/2018,110.099998\r\n",
"10/19/2018,108.930000\r\n",
"10/22/2018,109.320000\r\n",
"10/23/2018,107.769997\r\n",
"10/24/2018,108.410004\r\n",
"10/25/2018,106.550003\r\n",
"10/26/2018,105.690002\r\n",
"10/29/2018,108.110001\r\n",
"10/30/2018,103.660004\r\n",
"10/31/2018,105.440002\r\n",
"11/1/2018,107.050003\r\n",
"11/2/2018,106.480003\r\n",
"11/5/2018,106.370003\r\n",
"11/6/2018,107.379997\r\n",
"11/7/2018,109.440002\r\n",
"11/8/2018,111.800003\r\n",
"11/9/2018,110.849998\r\n",
"11/12/2018,109.419998\r\n",
"11/13/2018,107.550003\r\n",
"11/14/2018,108.099998\r\n",
"11/15/2018,104.989998\r\n",
"11/16/2018,107.080002\r\n",
"11/19/2018,108.269997\r\n",
"11/20/2018,101.800003\r\n",
"11/21/2018,103.599998\r\n",
"11/23/2018,102.169998\r\n",
"11/26/2018,104.790001\r\n",
"11/27/2018,106.269997\r\n",
"11/28/2018,107.889999\r\n",
"11/29/2018,110.330002\r\n",
"11/30/2018,110.699997\r\n",
"12/3/2018,113.000000\r\n",
"12/4/2018,111.940002\r\n",
"12/6/2018,105.820000\r\n",
"12/7/2018,108.379997\r\n",
"12/10/2018,104.800003\r\n",
"12/11/2018,109.800003\r\n",
"12/12/2018,110.889999\r\n",
"12/13/2018,109.580002\r\n",
"12/14/2018,108.250000\r\n",
"12/17/2018,105.410004\r\n",
"12/18/2018,103.750000\r\n",
"12/19/2018,103.650002\r\n",
"12/20/2018,103.050003\r\n",
"12/21/2018,101.629997\r\n",
"12/24/2018,97.680000\r\n",
"12/26/2018,95.139999\r\n",
"12/27/2018,99.300003\r\n",
"12/28/2018,102.089996\r\n",
"12/31/2018,101.290001\r\n",
"1/2/2019,99.550003\r\n",
"1/3/2019,100.099998\r\n",
"1/4/2019,99.720001\r\n",
"1/7/2019,101.639999\r\n",
"1/8/2019,103.040001\r\n",
"1/9/2019,103.860001\r\n",
"1/10/2019,103.220001\r\n",
"1/11/2019,103.190002\r\n",
"1/14/2019,101.900002\r\n",
"1/15/2019,102.510002\r\n",
"1/16/2019,105.260002\r\n",
"1/17/2019,105.000000\r\n",
"1/18/2019,107.459999\r\n",
"1/22/2019,106.750000\r\n",
"1/23/2019,106.120003\r\n",
"1/24/2019,106.860001\r\n",
"1/25/2019,107.239998\r\n",
"1/28/2019,106.260002\r\n",
"1/29/2019,104.879997\r\n",
"1/30/2019,104.620003\r\n",
"1/31/2019,103.800003\r\n",
"2/1/2019,103.779999\r\n",
"2/4/2019,102.870003\r\n",
"2/5/2019,106.059998\r\n",
"2/6/2019,107.000000\r\n",
"2/7/2019,105.190002\r\n",
"2/8/2019,104.389999\r\n",
"2/11/2019,106.199997\r\n",
"2/12/2019,106.139999\r\n",
"2/13/2019,107.500000\r\n",
"2/14/2019,106.309998\r\n",
"2/15/2019,107.910004\r\n",
"2/19/2019,107.790001\r\n",
"2/20/2019,107.860001\r\n",
"2/21/2019,106.900002\r\n",
"2/22/2019,110.050003\r\n",
"2/25/2019,111.760002\r\n",
"2/26/2019,111.260002\r\n",
"2/27/2019,111.690002\r\n",
"2/28/2019,112.040001\r\n",
"3/1/2019,112.889999\r\n",
"3/4/2019,113.019997\r\n",
"3/5/2019,112.250000\r\n",
"3/6/2019,111.870003\r\n",
"3/7/2019,111.400002\r\n",
"3/8/2019,109.160004\r\n",
"3/11/2019,110.989998\r\n",
"3/12/2019,112.820000\r\n",
"3/13/2019,114.129997\r\n",
"3/14/2019,114.540001\r\n",
"3/15/2019,115.339996\r\n",
"3/18/2019,116.169998\r\n",
"3/19/2019,118.089996\r\n",
"3/20/2019,117.389999\r\n",
"3/21/2019,117.139999\r\n",
"3/22/2019,119.500000\r\n",
"3/25/2019,116.559998\r\n",
"3/26/2019,118.620003\r\n",
"3/27/2019,117.879997\r\n",
"3/28/2019,117.440002\r\n",
"3/29/2019,118.070000\r\n",
"4/1/2019,118.949997\r\n",
"4/2/2019,119.059998\r\n",
"4/3/2019,119.860001\r\n",
"4/4/2019,120.099998\r\n",
"4/5/2019,119.389999\r\n",
"4/8/2019,119.809998\r\n",
"4/9/2019,118.629997\r\n",
"4/10/2019,119.760002\r\n",
"4/11/2019,120.540001\r\n",
"4/12/2019,120.639999\r\n",
"4/15/2019,120.940002\r\n",
"4/16/2019,121.639999\r\n",
"4/17/2019,121.239998\r\n",
"4/18/2019,122.190002\r\n",
"4/22/2019,122.620003\r\n",
"4/23/2019,124.099998\r\n",
"4/24/2019,125.790001\r\n",
"4/25/2019,130.059998\r\n",
"4/26/2019,129.699997\r\n",
"4/29/2019,129.899994\r\n",
"4/30/2019,129.809998\r\n",
"5/1/2019,130.529999\r\n",
"5/2/2019,127.980003\r\n",
"5/3/2019,127.360001\r\n",
"5/6/2019,126.389999\r\n",
"5/7/2019,126.459999\r\n",
"5/8/2019,125.440002\r\n",
"5/9/2019,124.290001\r\n",
"5/10/2019,124.910004\r\n",
"5/13/2019,124.110001\r\n",
"5/14/2019,123.870003\r\n",
"5/15/2019,124.260002\r\n",
"5/16/2019,126.750000\r\n",
"5/17/2019,128.309998\r\n",
"5/20/2019,126.519997\r\n",
"5/21/2019,127.430000\r\n",
"5/22/2019,126.620003\r\n",
"5/23/2019,126.199997\r\n",
"5/24/2019,126.910004\r\n",
"5/28/2019,126.980003\r\n",
"5/29/2019,125.379997\r\n",
"5/30/2019,125.260002\r\n",
"5/31/2019,124.230003\r\n",
"6/3/2019,123.849998\r\n",
"6/4/2019,121.279999\r\n",
"6/5/2019,124.949997\r\n",
"6/6/2019,126.440002\r\n",
"6/7/2019,129.190002\r\n",
"6/10/2019,132.399994\r\n",
"6/11/2019,133.880005\r\n",
"6/12/2019,131.399994\r\n",
"6/13/2019,131.979996\r\n",
"6/14/2019,132.259995\r\n",
"6/17/2019,132.630005\r\n",
"6/18/2019,134.190002\r\n",
"6/19/2019,135.000000\r\n",
"6/20/2019,137.449997\r\n",
"6/21/2019,136.580002\r\n",
"6/24/2019,137.000000\r\n",
"6/25/2019,137.250000\r\n",
"6/26/2019,134.350006\r\n",
"6/27/2019,134.139999\r\n",
"6/28/2019,134.570007\r\n",
"7/1/2019,136.630005\r\n",
"7/2/2019,136.119995\r\n",
"7/3/2019,136.800003\r\n",
"7/5/2019,135.940002\r\n",
"7/8/2019,136.399994\r\n",
"7/9/2019,136.000000\r\n",
"7/10/2019,137.130005\r\n",
"7/11/2019,138.199997\r\n",
"7/12/2019,138.850006\r\n",
"7/15/2019,139.440002\r\n",
"7/16/2019,138.960007\r\n",
"7/17/2019,137.699997\r\n",
"7/18/2019,135.550003\r\n",
"7/19/2019,140.220001\r\n",
"7/22/2019,137.410004\r\n",
"7/23/2019,139.759995\r\n",
"7/24/2019,138.899994\r\n",
"7/25/2019,140.429993\r\n",
"7/26/2019,140.369995\r\n",
"7/29/2019,141.500000\r\n",
"7/30/2019,140.139999\r\n",
"7/31/2019,140.330002\r\n",
"8/1/2019,137.000000\r\n",
"8/2/2019,138.089996\r\n",
"8/5/2019,133.300003\r\n",
"8/6/2019,133.800003\r\n",
"8/7/2019,133.789993\r\n",
"8/8/2019,136.600006\r\n",
"8/9/2019,138.610001\r\n",
"8/12/2019,137.070007\r\n",
"8/13/2019,136.050003\r\n",
"8/14/2019,136.360001\r\n",
"8/15/2019,134.389999\r\n",
"8/16/2019,134.880005\r\n",
"8/19/2019,137.850006\r\n",
"8/20/2019,138.210007\r\n",
"8/21/2019,138.550003\r\n",
"8/22/2019,138.660004\r\n",
"8/23/2019,137.190002\r\n",
"8/26/2019,134.990005\r\n",
"8/27/2019,136.389999\r\n",
"8/28/2019,134.880005\r\n",
"8/29/2019,137.250000\r\n",
"8/30/2019,139.149994\r\n",
"9/3/2019,136.610001\r\n",
"9/4/2019,137.300003\r\n",
"9/5/2019,139.110001\r\n",
"9/6/2019,140.029999\r\n",
"9/9/2019,139.589996\r\n",
"9/10/2019,136.800003\r\n",
"9/11/2019,135.910004\r\n",
"9/12/2019,137.850006\r\n",
"9/13/2019,137.779999\r\n",
"9/16/2019,135.830002\r\n",
"9/17/2019,136.960007\r\n",
"9/18/2019,137.360001\r\n",
"9/19/2019,140.300003\r\n",
"9/20/2019,141.009995\r\n",
"9/23/2019,139.229996\r\n",
"9/24/2019,140.360001\r\n",
"9/25/2019,137.500000\r\n",
"9/26/2019,139.440002\r\n",
"9/27/2019,140.149994\r\n",
"9/30/2019,138.050003\r\n",
"10/1/2019,139.660004\r\n",
"10/2/2019,136.250000\r\n",
"10/3/2019,134.949997\r\n",
"10/4/2019,136.750000\r\n",
"10/7/2019,137.139999\r\n",
"10/8/2019,137.080002\r\n",
"10/9/2019,137.460007\r\n",
"10/10/2019,138.490005\r\n",
"10/11/2019,140.119995\r\n",
"10/14/2019,139.690002\r\n",
"10/15/2019,140.059998\r\n",
"10/16/2019,140.789993\r\n",
"10/17/2019,140.949997\r\n",
"10/18/2019,139.759995\r\n",
"10/21/2019,138.449997\r\n",
"10/22/2019,138.970001\r\n",
"10/23/2019,136.880005\r\n",
"10/24/2019,139.389999\r\n",
"10/25/2019,139.339996\r\n",
"10/28/2019,144.399994\r\n",
"10/29/2019,144.080002\r\n",
"10/30/2019,143.520004\r\n",
"10/31/2019,144.899994\r\n",
"11/1/2019,144.259995\r\n",
"11/4/2019,144.830002\r\n",
"11/5/2019,144.970001\r\n",
"11/6/2019,144.369995\r\n",
"11/7/2019,143.839996\r\n",
"11/8/2019,143.979996\r\n",
"11/11/2019,145.339996\r\n",
"11/12/2019,146.279999\r\n",
"11/13/2019,146.740005\r\n",
"11/14/2019,147.020004\r\n",
"11/15/2019,148.929993\r\n",
"11/18/2019,150.070007\r\n",
"11/19/2019,150.880005\r\n",
"11/20/2019,150.309998\r\n",
"11/21/2019,149.399994\r\n",
"11/22/2019,150.070007\r\n",
"11/25/2019,150.000000\r\n",
"11/26/2019,151.360001\r\n",
"11/27/2019,152.330002\r\n",
"11/29/2019,152.100006\r\n",
"12/2/2019,151.809998\r\n",
"12/3/2019,147.490005\r\n",
"12/4/2019,150.139999\r\n",
"12/5/2019,150.050003\r\n",
"12/6/2019,150.990005\r\n",
"12/9/2019,151.070007\r\n",
"12/10/2019,151.289993\r\n",
"12/11/2019,151.539993\r\n",
"12/12/2019,151.649994\r\n",
"12/13/2019,153.000000\r\n",
"12/16/2019,155.110001\r\n",
"12/17/2019,155.449997\r\n",
"12/18/2019,154.300003\r\n",
"12/19/2019,154.000000\r\n",
"12/20/2019,157.350006\r\n",
"12/23/2019,158.119995\r\n",
"12/24/2019,157.479996\r\n",
"12/26/2019,157.559998\r\n",
"12/27/2019,159.449997\r\n",
"12/30/2019,158.990005\r\n",
"12/31/2019,156.770004\r\n",
"1/2/2020,158.779999\r\n",
"1/3/2020,158.320007\r\n",
"1/6/2020,157.080002\r\n",
"1/7/2020,159.320007\r\n",
"1/8/2020,158.929993\r\n",
"1/9/2020,161.839996\r\n",
"1/10/2020,162.820007\r\n",
"1/13/2020,161.759995\r\n",
"1/14/2020,163.389999\r\n",
"1/15/2020,162.619995\r\n",
"1/16/2020,164.350006\r\n",
"1/17/2020,167.419998\r\n",
"1/21/2020,166.679993\r\n",
"1/22/2020,167.399994\r\n",
"1/23/2020,166.190002\r\n",
"1/24/2020,167.509995\r\n",
"1/27/2020,161.149994\r\n",
"1/28/2020,163.779999\r\n",
"1/29/2020,167.839996\r\n",
"1/30/2020,174.050003\r\n",
"1/31/2020,172.210007\r\n",
"2/3/2020,170.429993\r\n",
"2/4/2020,177.139999\r\n",
"2/5/2020,184.029999\r\n",
"2/6/2020,180.970001\r\n",
"2/7/2020,182.850006\r\n",
"2/10/2020,183.580002\r\n",
"2/11/2020,190.649994\r\n",
"2/12/2020,185.580002\r\n",
"2/13/2020,183.080002\r\n",
"2/14/2020,183.250000\r\n",
"2/18/2020,185.610001\r\n",
"2/19/2020,188.059998\r\n",
"2/20/2020,186.949997\r\n",
"2/21/2020,183.169998\r\n",
"2/24/2020,167.770004\r\n",
"2/25/2020,174.199997\r\n",
"2/26/2020,169.710007\r\n",
"2/27/2020,163.320007\r\n",
"2/28/2020,152.410004\r\n",
"3/2/2020,165.309998\r\n",
"3/3/2020,173.800003\r\n",
"3/4/2020,168.490005\r\n",
"3/5/2020,166.050003\r\n",
"3/6/2020,162.610001\r\n",
"3/9/2020,151.000000\r\n",
"3/10/2020,158.160004\r\n",
"3/11/2020,157.130005\r\n",
"3/12/2020,145.300003\r\n",
"3/13/2020,147.500000\r\n",
"3/16/2020,140.000000\r\n",
"3/17/2020,140.000000\r\n",
"3/18/2020,138.000000\r\n",
"3/19/2020,142.770004\r\n",
"3/20/2020,146.000000\r\n",
"3/23/2020,137.009995\r\n",
"3/24/2020,143.750000\r\n",
"3/25/2020,148.910004\r\n",
"3/26/2020,148.399994\r\n",
"3/27/2020,151.750000\r\n",
"3/30/2020,152.440002\r\n",
"3/31/2020,159.399994\r\n",
"4/1/2020,153.000000\r\n",
"4/2/2020,151.860001\r\n",
"4/3/2020,155.100006\r\n",
"4/6/2020,160.320007\r\n",
"4/7/2020,169.589996\r\n",
"4/8/2020,165.669998\r\n",
"4/9/2020,166.360001\r\n",
"4/13/2020,164.350006\r\n",
"4/14/2020,169.000000\r\n",
"4/15/2020,171.199997\r\n",
"4/16/2020,174.300003\r\n",
"4/17/2020,179.500000\r\n",
"4/20/2020,176.630005\r\n",
"4/21/2020,173.500000\r\n",
"4/22/2020,171.389999\r\n",
"4/23/2020,174.110001\r\n",
"4/24/2020,172.059998\r\n",
"4/27/2020,176.589996\r\n",
"4/28/2020,175.589996\r\n",
"4/29/2020,173.220001\r\n",
"4/30/2020,180.000000\r\n",
"5/1/2020,175.800003\r\n",
"5/4/2020,174.490005\r\n",
"5/5/2020,180.619995\r\n",
"5/6/2020,182.080002\r\n",
"5/7/2020,184.169998\r\n",
"5/8/2020,184.979996\r\n",
"5/11/2020,183.149994\r\n",
"5/12/2020,186.800003\r\n",
"5/13/2020,182.550003\r\n",
"5/14/2020,177.539993\r\n",
"5/15/2020,179.059998\r\n",
"5/18/2020,185.750000\r\n",
"5/19/2020,185.029999\r\n",
"5/20/2020,184.809998\r\n",
"5/21/2020,185.399994\r\n",
"5/22/2020,183.190002\r\n",
"5/26/2020,186.339996\r\n",
"5/27/2020,180.199997\r\n",
"5/28/2020,180.740005\r\n",
"5/29/2020,182.729996\r\n",
"6/1/2020,182.539993\r\n",
"6/2/2020,184.250000\r\n",
"6/3/2020,184.820007\r\n",
"6/4/2020,184.300003\r\n",
"6/5/2020,182.619995\r\n",
"6/8/2020,185.940002\r\n",
"6/9/2020,188.000000\r\n",
"6/10/2020,191.130005\r\n",
"6/11/2020,193.130005\r\n",
"6/12/2020,190.539993\r\n",
"6/15/2020,184.580002\r\n",
"6/16/2020,192.889999\r\n",
"6/17/2020,195.029999\r\n",
"6/18/2020,194.000000\r\n",
"6/19/2020,198.589996\r\n",
"6/22/2020,195.789993\r\n",
"6/23/2020,202.089996\r\n",
"6/24/2020,201.600006\r\n",
"6/25/2020,197.800003\r\n",
"6/26/2020,199.729996\r\n",
"6/29/2020,195.779999\r\n",
"6/30/2020,197.880005\r\n",
"7/1/2020,203.139999\r\n",
"7/2/2020,205.679993\r\n",
"7/6/2020,208.830002\r\n",
"7/7/2020,210.449997\r\n",
"7/8/2020,210.070007\r\n",
"7/9/2020,216.330002\r\n",
"7/10/2020,213.619995\r\n",
"7/13/2020,214.479996\r\n",
"7/14/2020,206.130005\r\n",
"7/15/2020,209.559998\r\n",
"7/16/2020,205.399994\r\n",
"7/17/2020,204.470001\r\n",
"7/20/2020,205.000000\r\n",
"7/21/2020,213.660004\r\n",
"7/22/2020,209.199997\r\n",
"7/23/2020,207.190002\r\n",
"7/24/2020,200.419998\r\n",
"7/27/2020,201.470001\r\n",
"7/28/2020,203.610001\r\n",
"7/29/2020,202.500000\r\n",
"7/30/2020,201.000000\r\n",
"7/31/2020,204.399994\r\n",
"8/3/2020,211.520004\r\n",
"8/4/2020,214.169998\r\n",
"8/5/2020,214.899994\r\n",
"8/6/2020,212.339996\r\n",
"8/7/2020,214.850006\r\n",
"8/10/2020,211.669998\r\n",
"8/11/2020,207.160004\r\n",
"8/12/2020,205.289993\r\n",
"8/13/2020,209.440002\r\n",
"8/14/2020,208.759995\r\n",
"8/17/2020,209.600006\r\n",
"8/18/2020,210.529999\r\n",
"8/19/2020,211.490005\r\n",
"8/20/2020,209.539993\r\n",
"8/21/2020,213.860001\r\n",
"8/24/2020,214.789993\r\n",
"8/25/2020,213.100006\r\n",
"8/26/2020,217.880005\r\n",
"8/27/2020,222.889999\r\n",
"8/28/2020,228.179993\r\n",
"8/31/2020,227.000000\r\n",
"9/1/2020,225.509995\r\n",
"9/2/2020,227.970001\r\n",
"9/3/2020,229.270004\r\n",
"9/4/2020,215.100006\r\n",
"9/8/2020,206.500000\r\n",
"9/9/2020,207.600006\r\n",
"9/10/2020,213.399994\r\n",
"9/11/2020,207.199997\r\n",
"9/14/2020,204.240005\r\n",
"9/15/2020,208.419998\r\n",
"9/16/2020,210.619995\r\n",
"9/17/2020,200.050003\r\n",
"9/18/2020,202.800003\r\n",
"9/21/2020,197.190002\r\n",
"9/22/2020,205.059998\r\n",
"9/23/2020,207.899994\r\n",
"9/24/2020,199.850006\r\n",
"9/25/2020,203.550003\r\n",
"9/28/2020,210.880005\r\n",
"9/29/2020,209.350006\r\n",
"9/30/2020,207.729996\r\n",
"10/1/2020,213.490005\r\n",
"10/2/2020,208.000000\r\n",
"10/5/2020,207.220001\r\n",
"10/6/2020,208.820007\r\n",
"10/7/2020,207.059998\r\n",
"10/8/2020,210.509995\r\n",
"10/9/2020,211.229996\r\n",
"10/12/2020,218.789993\r\n",
"10/13/2020,222.720001\r\n",
"10/14/2020,223.000000\r\n",
"10/15/2020,217.100006\r\n",
"10/16/2020,220.149994\r\n",
"10/19/2020,220.419998\r\n",
"10/20/2020,215.800003\r\n",
"10/21/2020,213.119995\r\n",
"10/22/2020,213.929993\r\n",
"10/23/2020,215.029999\r\n",
"10/26/2020,213.850006\r\n",
"10/27/2020,211.589996\r\n",
"10/28/2020,207.669998\r\n",
"10/29/2020,204.070007\r\n",
"10/30/2020,203.500000\r\n",
"11/2/2020,204.289993\r\n",
"11/3/2020,203.889999\r\n",
"11/4/2020,214.020004\r\n",
"11/5/2020,222.039993\r\n",
"11/6/2020,222.259995\r\n",
"11/9/2020,224.440002\r\n",
"11/10/2020,214.500000\r\n",
"11/11/2020,212.389999\r\n",
"11/12/2020,217.210007\r\n",
"11/13/2020,216.360001\r\n",
"11/16/2020,214.869995\r\n",
"11/17/2020,216.100006\r\n",
"11/18/2020,213.649994\r\n",
"11/19/2020,211.380005\r\n",
"11/20/2020,212.199997\r\n",
"11/23/2020,210.949997\r\n",
"11/24/2020,209.589996\r\n",
"11/25/2020,215.110001\r\n",
"11/27/2020,214.850006\r\n",
"11/30/2020,214.100006\r\n",
"12/1/2020,214.509995\r\n",
"12/2/2020,214.880005\r\n",
"12/3/2020,214.610001\r\n",
"12/4/2020,214.220001\r\n",
"12/7/2020,214.369995\r\n",
"12/8/2020,213.970001\r\n",
"12/9/2020,215.160004\r\n",
"12/10/2020,211.770004\r\n",
"12/11/2020,210.050003\r\n",
"12/14/2020,213.100006\r\n",
"12/15/2020,215.169998\r\n",
"12/16/2020,214.750000\r\n",
"12/17/2020,219.869995\r\n",
"12/18/2020,218.589996\r\n",
"12/21/2020,217.550003\r\n",
"12/22/2020,222.690002\r\n",
"12/23/2020,223.110001\r\n",
"12/24/2020,221.419998\r\n",
"12/28/2020,224.449997\r\n",
"12/29/2020,226.309998\r\n",
"12/30/2020,225.229996\r\n",
"12/31/2020,221.699997\r\n",
"1/4/2021,222.529999\r\n",
"1/5/2021,217.259995\r\n",
"1/6/2021,212.169998\r\n",
"1/7/2021,214.039993\r\n",
"1/8/2021,218.679993\r\n",
"1/11/2021,218.470001\r\n",
"1/12/2021,216.500000\r\n",
"1/13/2021,214.020004\r\n",
"1/14/2021,215.910004\r\n",
"1/15/2021,213.520004\r\n",
"1/19/2021,213.750000\r\n",
"1/20/2021,217.699997\r\n",
"1/21/2021,224.699997\r\n",
"1/22/2021,227.080002\r\n",
"1/25/2021,229.119995\r\n",
"1/26/2021,231.860001\r\n",
"1/27/2021,238.000000\r\n",
"1/28/2021,235.610001\r\n",
"1/29/2021,235.990005\r\n",
"2/1/2021,235.059998\r\n",
"2/2/2021,241.300003\r\n",
"2/3/2021,239.570007\r\n",
"2/4/2021,242.660004\r\n",
"2/5/2021,242.229996\r\n",
"2/8/2021,243.149994\r\n",
"2/9/2021,241.869995\r\n",
"2/10/2021,245.000000\r\n",
"2/11/2021,244.779999\r\n",
"2/12/2021,243.929993\r\n",
"2/16/2021,245.029999\r\n",
"2/17/2021,241.320007\r\n",
"2/18/2021,241.800003\r\n",
"2/19/2021,243.750000\r\n",
"2/22/2021,237.419998\r\n",
"2/23/2021,230.330002\r\n",
"2/24/2021,230.009995\r\n",
"2/25/2021,232.080002\r\n",
"2/26/2021,231.529999\r\n",
"3/1/2021,235.899994\r\n",
"3/2/2021,237.009995\r\n",
"3/3/2021,232.160004\r\n",
"3/4/2021,226.740005\r\n",
"3/5/2021,229.520004\r\n",
"3/8/2021,231.369995\r\n",
"3/9/2021,232.880005\r\n",
"3/10/2021,237.000000\r\n",
"3/11/2021,234.960007\r\n",
"3/12/2021,234.009995\r\n",
"3/15/2021,234.960007\r\n",
"3/16/2021,236.279999\r\n",
"3/17/2021,236.149994\r\n",
"3/18/2021,232.559998\r\n",
"3/19/2021,231.020004\r\n",
"3/22/2021,230.270004\r\n",
"3/23/2021,237.490005\r\n",
"3/24/2021,237.850006\r\n",
"3/25/2021,235.300003\r\n",
"3/26/2021,231.550003\r\n",
"3/29/2021,236.589996\r\n",
"3/30/2021,233.529999\r\n",
"3/31/2021,232.910004\r\n",
"4/1/2021,238.470001\r\n",
"4/5/2021,242.759995\r\n",
"4/6/2021,247.610001\r\n",
"4/7/2021,247.809998\r\n",
"4/8/2021,252.770004\r\n",
"4/9/2021,252.869995\r\n",
"4/12/2021,254.710007\r\n",
"4/13/2021,257.260010\r\n",
"4/14/2021,257.480011\r\n",
"4/15/2021,257.929993\r\n",
"4/16/2021,259.470001\r\n",
"4/19/2021,260.190002\r\n",
"4/20/2021,257.820007\r\n",
"4/21/2021,258.940002\r\n",
"4/22/2021,260.209991\r\n",
"4/23/2021,257.880005\r\n",
"4/26/2021,261.660004\r\n",
"4/27/2021,261.579987\r\n",
"4/28/2021,256.079987\r\n",
"4/29/2021,255.460007\r\n",
"4/30/2021,249.740005\r\n",
"5/3/2021,253.399994\r\n",
"5/4/2021,250.970001\r\n",
"5/5/2021,249.059998\r\n",
"5/6/2021,246.449997\r\n",
"5/7/2021,252.149994\r\n",
"5/10/2021,250.869995\r\n",
"5/11/2021,244.550003\r\n",
"5/12/2021,242.169998\r\n",
"5/13/2021,241.800003\r\n",
"5/14/2021,245.580002\r\n",
"5/17/2021,246.550003\r\n",
"5/18/2021,246.270004\r\n",
"5/19/2021,239.309998\r\n",
"5/20/2021,243.960007\r\n",
"5/21/2021,247.570007\r\n",
"5/24/2021,247.789993\r\n",
"5/25/2021,251.770004\r\n",
"5/26/2021,251.429993\r\n",
"5/27/2021,251.169998\r\n",
"5/28/2021,251.000000\r\n",
"6/1/2021,251.229996\r\n",
"6/2/2021,248.130005\r\n",
"6/3/2021,245.220001\r\n",
"6/4/2021,247.759995\r\n",
"6/7/2021,249.979996\r\n",
"6/8/2021,255.160004\r\n",
"6/9/2021,253.809998\r\n",
"6/10/2021,254.289993\r\n",
"6/11/2021,257.989990\r\n",
"6/14/2021,257.899994\r\n",
"6/15/2021,259.769989\r\n",
"6/16/2021,259.399994\r\n",
"6/17/2021,256.070007\r\n",
"6/18/2021,259.630005\r\n",
"6/21/2021,259.820007\r\n",
"6/22/2021,262.720001\r\n",
"6/23/2021,265.989990\r\n",
"6/24/2021,266.160004\r\n",
"6/25/2021,266.230011\r\n",
"6/28/2021,266.190002\r\n",
"6/29/2021,268.869995\r\n",
"6/30/2021,270.690002\r\n",
"7/1/2021,269.609985\r\n",
"7/2/2021,272.820007\r\n",
"7/6/2021,278.029999\r\n",
"7/7/2021,279.399994\r\n",
"7/8/2021,276.899994\r\n",
"7/9/2021,275.720001\r\n",
"7/12/2021,279.160004\r\n",
"7/13/2021,277.519989\r\n",
"7/14/2021,282.350006\r\n",
"7/15/2021,282.000000\r\n",
"7/16/2021,282.070007\r\n",
"7/19/2021,278.929993\r\n",
"7/20/2021,278.029999\r\n",
"7/21/2021,278.899994\r\n",
"7/22/2021,283.839996\r\n",
"7/23/2021,287.369995\r\n",
"7/26/2021,289.000000\r\n",
"7/27/2021,289.429993\r\n",
"7/28/2021,288.989990\r\n",
"7/29/2021,286.239990\r\n",
"7/30/2021,285.170013\r\n",
"8/2/2021,286.359985\r\n",
"8/3/2021,285.420013\r\n",
"8/4/2021,286.220001\r\n",
"8/5/2021,286.880005\r\n",
"8/6/2021,288.510010\r\n",
"8/9/2021,289.750000\r\n",
"8/10/2021,288.799988\r\n",
"8/11/2021,287.209991\r\n",
"8/12/2021,286.630005\r\n",
"8/13/2021,289.480011\r\n",
"8/16/2021,293.190002\r\n",
"8/17/2021,292.390015\r\n",
"8/18/2021,292.040009\r\n",
"8/19/2021,288.690002\r\n",
"8/20/2021,299.720001\r\n",
"8/23/2021,303.250000\r\n",
"8/24/2021,305.019989\r\n",
"8/25/2021,304.299988\r\n",
"8/26/2021,300.989990\r\n",
"8/27/2021,298.989990\r\n",
"8/30/2021,301.119995\r\n",
"8/31/2021,304.420013\r\n",
"9/1/2021,302.869995\r\n",
"9/2/2021,302.200012\r\n",
"9/3/2021,300.989990\r\n",
"9/7/2021,301.010010\r\n",
"9/8/2021,299.779999\r\n",
"9/9/2021,300.820007\r\n",
"9/10/2021,298.420013\r\n",
"9/13/2021,297.549988\r\n",
"9/14/2021,299.559998\r\n",
"9/15/2021,303.260010\r\n",
"9/16/2021,303.760010\r\n",
"9/17/2021,304.170013\r\n",
"9/20/2021,296.329987\r\n",
"9/21/2021,295.690002\r\n",
"9/22/2021,296.730011\r\n",
"9/23/2021,298.850006\r\n",
"9/24/2021,298.230011\r\n",
"9/27/2021,296.140015\r\n",
"9/28/2021,289.799988\r\n",
"9/29/2021,285.100006\r\n",
"9/30/2021,285.709991\r\n",
"10/1/2021,282.119995\r\n",
"10/4/2021,287.399994\r\n",
"10/5/2021,284.049988\r\n",
"10/6/2021,285.779999\r\n",
"10/7/2021,295.179993\r\n",
"10/8/2021,296.220001\r\n",
"10/11/2021,292.920013\r\n",
"10/12/2021,295.339996\r\n",
"10/13/2021,294.910004\r\n",
"10/14/2021,299.209991\r\n",
"10/15/2021,302.339996\r\n",
"10/18/2021,303.570007\r\n",
"10/19/2021,308.350006\r\n",
"10/20/2021,309.209991\r\n",
"10/21/2021,307.170013\r\n",
"10/22/2021,310.399994\r\n",
"10/25/2021,309.359985\r\n",
"10/26/2021,311.000000\r\n",
"10/27/2021,316.000000\r\n",
"10/28/2021,324.329987\r\n",
"10/29/2021,324.130005\r\n",
"11/1/2021,331.359985\r\n",
"11/2/2021,330.309998\r\n",
"11/3/2021,333.899994\r\n",
"11/4/2021,332.890015\r\n",
"11/5/2021,338.510010\r\n",
"11/8/2021,337.299988\r\n",
"11/9/2021,337.109985\r\n",
"11/10/2021,334.570007\r\n",
"11/11/2021,331.250000\r\n",
"11/12/2021,333.920013\r\n",
"11/15/2021,337.540009\r\n",
"11/16/2021,335.679993\r\n",
"11/17/2021,338.940002\r\n",
"11/18/2021,338.179993\r\n",
"11/19/2021,342.640015\r\n",
"11/22/2021,344.619995\r\n",
"11/23/2021,337.049988\r\n",
"11/24/2021,336.279999\r\n",
"11/26/2021,334.350006\r\n",
"11/29/2021,334.940002\r\n",
"11/30/2021,335.320007\r\n",
"12/1/2021,335.130005\r\n",
"12/2/2021,330.299988\r\n",
"12/3/2021,331.989990\r\n",
"12/6/2021,323.950012\r\n",
"12/7/2021,331.640015\r\n",
"12/8/2021,335.309998\r\n",
"12/9/2021,334.410004\r\n",
"12/10/2021,334.980011\r\n",
"12/13/2021,340.679993\r\n",
"12/14/2021,333.220001\r\n",
"12/15/2021,328.609985\r\n",
"12/16/2021,335.709991\r\n",
"12/17/2021,320.880005\r\n",
"12/20/2021,320.049988\r\n",
"12/21/2021,323.290009\r\n",
"12/22/2021,328.299988\r\n",
"12/23/2021,332.750000\r\n",
"12/27/2021,335.459991\r\n",
"12/28/2021,343.149994\r\n",
"12/29/2021,341.299988\r\n",
"12/30/2021,341.910004\r\n",
"12/31/2021,338.510010\r\n",
"1/3/2022,335.350006\r\n",
"1/4/2022,334.829987\r\n",
"1/5/2022,325.859985\r\n",
"1/6/2022,313.149994\r\n",
"1/7/2022,314.149994\r\n",
"1/10/2022,309.489990\r\n",
"1/11/2022,313.380005\r\n",
"1/12/2022,319.670013\r\n",
"1/13/2022,320.470001\r\n",
"1/14/2022,304.250000\r\n",
"1/18/2022,304.070007\r\n",
"1/19/2022,306.290009\r\n",
"1/20/2022,309.070007\r\n",
"1/21/2022,302.690002\r\n",
"1/24/2022,292.200012\r\n",
"1/25/2022,291.519989\r\n",
"1/26/2022,307.989990\r\n",
"1/27/2022,302.660004\r\n",
"1/28/2022,300.230011\r\n",
"1/31/2022,308.950012\r\n",
"2/1/2022,310.410004\r\n",
"2/2/2022,309.630005\r\n",
"2/3/2022,309.489990\r\n",
"2/4/2022,300.209991\r\n",
"2/7/2022,306.170013\r\n",
"2/8/2022,301.250000\r\n",
"2/9/2022,309.869995\r\n",
"2/10/2022,304.040009\r\n",
"2/11/2022,303.190002\r\n",
"2/14/2022,293.769989\r\n",
"2/15/2022,300.010010\r\n",
"2/16/2022,298.369995\r\n",
"2/17/2022,296.359985\r\n",
"2/18/2022,293.049988\r\n",
"2/22/2022,285.000000\r\n",
"2/23/2022,290.179993\r\n",
"2/24/2022,272.510010\r\n",
"2/25/2022,295.140015\r\n",
"2/28/2022,294.309998\r\n",
"3/1/2022,296.399994\r\n",
"3/2/2022,295.359985\r\n",
"3/3/2022,302.890015\r\n",
"3/4/2022,294.290009\r\n",
"3/7/2022,288.529999\r\n",
"3/8/2022,277.799988\r\n",
"3/9/2022,283.440002\r\n",
"3/10/2022,283.019989\r\n",
"3/11/2022,287.959991\r\n",
"3/14/2022,280.339996\r\n",
"3/15/2022,280.350006\r\n",
"3/16/2022,289.109985\r\n",
"3/17/2022,293.290009\r\n",
"3/18/2022,295.369995\r\n",
"3/21/2022,298.890015\r\n",
"3/22/2022,299.799988\r\n",
"3/23/2022,300.510010\r\n",
"3/24/2022,299.140015\r\n",
"3/25/2022,305.230011\r\n",
"3/28/2022,304.329987\r\n",
"3/29/2022,313.910004\r\n",
"3/30/2022,313.760010\r\n",
"3/31/2022,313.899994\r\n",
"4/1/2022,309.369995\r\n",
"4/4/2022,310.089996\r\n",
"4/5/2022,313.269989\r\n",
"4/6/2022,305.190002\r\n",
"4/7/2022,296.660004\r\n",
"4/8/2022,300.440002\r\n",
"4/11/2022,291.790009\r\n",
"4/12/2022,289.239990\r\n",
"4/13/2022,282.730011\r\n",
"4/14/2022,288.089996\r\n",
"4/18/2022,278.910004\r\n",
"4/19/2022,279.380005\r\n",
"4/20/2022,289.399994\r\n",
"4/21/2022,288.579987\r\n",
"4/22/2022,281.679993\r\n",
"4/25/2022,273.290009\r\n",
"4/26/2022,277.500000\r\n",
"4/27/2022,282.100006\r\n",
"4/28/2022,285.190002\r\n",
"4/29/2022,288.609985\r\n",
"5/2/2022,277.709991\r\n",
"5/3/2022,283.959991\r\n",
"5/4/2022,282.589996\r\n",
"5/5/2022,285.540009\r\n",
"5/6/2022,274.809998\r\n",
"5/9/2022,270.059998\r\n",
"5/10/2022,271.690002\r\n",
"5/11/2022,265.679993\r\n",
"5/12/2022,257.690002\r\n",
"5/13/2022,257.350006\r\n",
"5/16/2022,259.959991\r\n",
"5/17/2022,266.109985\r\n",
"5/18/2022,263.000000\r\n",
"5/19/2022,253.899994\r\n",
"5/20/2022,257.239990\r\n",
"5/23/2022,255.490005\r\n",
"5/24/2022,257.890015\r\n",
"5/25/2022,258.140015\r\n",
"5/26/2022,262.269989\r\n",
"5/27/2022,268.480011\r\n",
"5/31/2022,272.529999\r\n",
"6/1/2022,275.200012\r\n",
"6/2/2022,264.450012\r\n",
"6/3/2022,270.309998\r\n",
"6/6/2022,272.059998\r\n",
"6/7/2022,266.640015\r\n",
"6/8/2022,271.709991\r\n",
"6/9/2022,267.779999\r\n",
"6/10/2022,260.579987\r\n",
"6/13/2022,245.110001\r\n",
"6/14/2022,243.860001\r\n",
"6/15/2022,248.309998\r\n",
"6/16/2022,245.979996\r\n",
"6/17/2022,244.699997\r\n",
"6/21/2022,250.259995\r\n",
"6/22/2022,251.889999\r\n",
"6/23/2022,255.570007\r\n",
"6/24/2022,261.809998\r\n",
"6/27/2022,268.209991\r\n",
"6/28/2022,263.980011\r\n",
"6/29/2022,257.589996\r\n",
"6/30/2022,257.049988\r\n",
"7/1/2022,256.390015\r\n",
"7/5/2022,256.160004\r\n",
"7/6/2022,263.750000\r\n",
"7/7/2022,265.119995\r\n",
"7/8/2022,264.790009\r\n",
"7/11/2022,265.649994\r\n",
"7/12/2022,265.880005\r\n",
"7/13/2022,250.190002\r\n",
"7/14/2022,250.570007\r\n",
"7/15/2022,255.720001\r\n",
"7/18/2022,259.750000\r\n",
"7/19/2022,257.579987\r\n",
"7/20/2022,259.899994\r\n",
"7/21/2022,259.790009\r\n",
"7/22/2022,265.239990\r\n",
"7/25/2022,261.000000\r\n",
"7/26/2022,259.859985\r\n",
"7/27/2022,261.160004\r\n",
"7/28/2022,269.750000\r\n",
"7/29/2022,277.700012\r\n",
"8/1/2022,277.820007\r\n",
"8/2/2022,276.000000\r\n",
"8/3/2022,276.760010\r\n",
"8/4/2022,281.799988\r\n",
"8/5/2022,279.149994\r\n",
"8/8/2022,284.049988\r\n",
"8/9/2022,279.640015\r\n",
"8/10/2022,288.170013\r\n",
"8/11/2022,290.850006\r\n",
"8/12/2022,288.480011\r\n",
"8/15/2022,291.000000\r\n",
"8/16/2022,291.989990\r\n",
"8/17/2022,289.739990\r\n",
"8/18/2022,290.190002\r\n",
"8/19/2022,288.899994\r\n",
"8/22/2022,282.079987\r\n",
"8/23/2022,276.440002\r\n",
"8/24/2022,275.410004\r\n",
"8/25/2022,277.329987\r\n",
"8/26/2022,279.079987\r\n",
"8/29/2022,265.850006\r\n",
"8/30/2022,266.670013\r\n",
"8/31/2022,265.390015\r\n",
"9/1/2022,258.869995\r\n",
"9/2/2022,261.700012\r\n",
"9/6/2022,256.200012\r\n",
"9/7/2022,254.699997\r\n",
"9/8/2022,257.510010\r\n",
"9/9/2022,260.500000\r\n",
"9/12/2022,265.779999\r\n",
"9/13/2022,258.839996\r\n",
"9/14/2022,253.529999\r\n",
"9/15/2022,249.770004\r\n",
"9/16/2022,244.259995\r\n",
"9/19/2022,242.470001\r\n",
"9/20/2022,242.070007\r\n",
"9/21/2022,244.270004\r\n",
"9/22/2022,237.869995\r\n",
"9/23/2022,239.539993\r\n",
"9/26/2022,237.050003\r\n",
"9/27/2022,239.979996\r\n",
"9/28/2022,236.809998\r\n",
"9/29/2022,238.889999\r\n",
"9/30/2022,238.289993\r\n",
"10/3/2022,235.410004\r\n",
"10/4/2022,245.089996\r\n",
"10/5/2022,245.990005\r\n",
"10/6/2022,247.929993\r\n",
"10/7/2022,240.899994\r\n",
"10/10/2022,233.050003\r\n",
"10/11/2022,227.619995\r\n",
"10/12/2022,225.399994\r\n",
"10/13/2022,219.850006\r\n",
"10/14/2022,235.539993\r\n",
"10/17/2022,235.820007\r\n",
"10/18/2022,243.240005\r\n",
"10/19/2022,237.039993\r\n",
"10/20/2022,235.770004\r\n",
"10/21/2022,234.740005\r\n",
"10/24/2022,243.759995\r\n",
"10/25/2022,247.259995\r\n",
"10/26/2022,231.169998\r\n",
"10/27/2022,231.039993\r\n",
"10/28/2022,226.240005\r\n",
"10/31/2022,233.759995\r\n",
"11/1/2022,234.600006\r\n",
"11/2/2022,229.460007\r\n",
"11/3/2022,220.089996\r\n",
"11/4/2022,217.550003\r\n",
"11/7/2022,221.990005\r\n",
"11/8/2022,228.699997\r\n",
"11/9/2022,227.369995\r\n",
"11/10/2022,235.429993\r\n",
"11/11/2022,242.990005\r\n",
"11/14/2022,241.990005\r\n",
"11/15/2022,245.660004\r\n",
"11/16/2022,242.789993\r\n",
"11/17/2022,237.779999\r\n",
"11/18/2022,243.509995\r\n",
"11/21/2022,241.429993\r\n",
"11/22/2022,243.589996\r\n",
"11/23/2022,245.110001\r\n",
"11/25/2022,247.309998\r\n",
"11/28/2022,246.080002\r\n",
"11/29/2022,241.399994\r\n",
"11/30/2022,240.570007\r\n",
"12/1/2022,253.869995\r\n",
"12/2/2022,249.820007\r\n",
"12/5/2022,252.009995\r\n",
"12/6/2022,250.820007\r\n",
"12/7/2022,244.830002\r\n",
"12/8/2022,244.839996\r\n",
"12/9/2022,244.699997\r\n",
"12/12/2022,247.449997\r\n",
"12/13/2022,261.690002\r\n",
"12/14/2022,257.130005\r\n",
"12/15/2022,253.720001\r\n",
"12/16/2022,248.550003\r\n",
"12/19/2022,244.860001\r\n",
"12/20/2022,239.399994\r\n",
"12/21/2022,241.690002\r\n",
"12/22/2022,241.259995\r\n",
"12/23/2022,236.110001\r\n",
"12/27/2022,238.699997\r\n",
"12/28/2022,236.889999\r\n",
"12/29/2022,235.649994\r\n",
"12/30/2022,238.210007\r\n",
"1/3/2023,243.080002\r\n",
"1/4/2023,232.279999\r\n",
"1/5/2023,227.199997\r\n",
"1/6/2023,223.000000\r\n",
"1/9/2023,226.449997\r\n",
"1/10/2023,227.759995\r\n",
"1/11/2023,231.289993\r\n",
"1/12/2023,235.259995\r\n",
"1/13/2023,237.000000\r\n",
"1/17/2023,237.970001\r\n",
"1/18/2023,241.570007\r\n",
"1/19/2023,233.779999\r\n",
"1/20/2023,234.860001\r\n",
"1/23/2023,241.100006\r\n",
"1/24/2023,242.500000\r\n",
"1/25/2023,234.479996\r\n",
"1/26/2023,243.649994\r\n",
"1/27/2023,248.990005\r\n",
"1/30/2023,244.509995\r\n",
"1/31/2023,243.449997\r\n",
"2/1/2023,248.000000\r\n",
"2/2/2023,258.820007\r\n",
"2/3/2023,259.540009\r\n",
"2/6/2023,257.440002\r\n",
"2/7/2023,260.529999\r\n",
"2/8/2023,273.200012\r\n",
"2/9/2023,273.799988\r\n",
"2/10/2023,261.529999\r\n",
"2/13/2023,267.640015\r\n",
"2/14/2023,272.670013\r\n",
"2/15/2023,268.320007\r\n",
"2/16/2023,264.019989\r\n",
"2/17/2023,259.390015\r\n",
"2/21/2023,254.479996\r\n",
"2/22/2023,254.089996\r\n",
"2/23/2023,255.559998\r\n",
"2/24/2023,249.960007\r\n",
"2/27/2023,252.460007\r\n",
"2/28/2023,249.070007\r\n",
"3/1/2023,250.759995\r\n",
"3/2/2023,246.550003\r\n",
"3/3/2023,252.190002\r\n",
"3/6/2023,256.429993\r\n",
"3/7/2023,256.299988\r\n",
"3/8/2023,254.039993\r\n",
"3/9/2023,255.820007\r\n",
"3/10/2023,251.080002\r\n",
"3/13/2023,247.399994\r\n",
"3/14/2023,256.750000\r\n",
"3/15/2023,259.980011\r\n",
"3/16/2023,265.209991\r\n",
"3/17/2023,278.260010\r\n",
"3/20/2023,276.980011\r\n",
"3/21/2023,274.880005\r\n",
"3/22/2023,273.399994\r\n",
"3/23/2023,277.940002\r\n",
"3/24/2023,277.239990\r\n",
"3/27/2023,280.500000\r\n",
"3/28/2023,275.790009\r\n",
"3/29/2023,278.959991\r\n",
"3/30/2023,284.230011\r\n",
"3/31/2023,283.730011\r\n",
"4/3/2023,286.519989\r\n",
"4/4/2023,287.230011\r\n",
"4/5/2023,285.850006\r\n",
"4/6/2023,283.209991\r\n",
"4/10/2023,289.209991\r\n",
"4/11/2023,285.750000\r\n",
"4/12/2023,284.790009\r\n",
"4/13/2023,283.589996\r\n",
"4/14/2023,287.000000\r\n",
"4/17/2023,289.929993\r\n",
"4/18/2023,291.570007\r\n",
"4/19/2023,285.989990\r\n",
"4/20/2023,285.250000\r\n",
"4/21/2023,285.010010\r\n",
"4/24/2023,282.089996\r\n",
"4/25/2023,279.510010\r\n",
"4/26/2023,296.700012\r\n",
"4/27/2023,295.970001\r\n",
"4/28/2023,304.010010\r\n",
"5/1/2023,306.970001\r\n",
"5/2/2023,307.760010\r\n",
"5/3/2023,306.619995\r\n",
"5/4/2023,306.239990\r\n",
"5/5/2023,305.720001\r\n",
"5/8/2023,310.130005\r\n",
"5/9/2023,308.000000\r\n",
"5/10/2023,308.619995\r\n",
"5/11/2023,310.100006\r\n",
"5/12/2023,310.549988\r\n",
"5/15/2023,309.100006\r\n",
"5/16/2023,309.829987\r\n",
"5/17/2023,312.290009\r\n",
"5/18/2023,314.529999\r\n",
"5/19/2023,316.739990\r\n",
"5/22/2023,318.600006\r\n",
"5/23/2023,320.029999\r\n",
"5/24/2023,314.730011\r\n",
"5/25/2023,323.239990\r\n",
"5/26/2023,324.019989\r\n",
"5/30/2023,335.230011\r\n",
"5/31/2023,332.290009\r\n",
"6/1/2023,325.929993\r\n",
"6/2/2023,334.250000\r\n",
"6/5/2023,335.220001\r\n",
"6/6/2023,335.329987\r\n",
"6/7/2023,331.649994\r\n",
"6/8/2023,323.940002\r\n",
"6/9/2023,324.989990\r\n",
"6/12/2023,328.579987\r\n",
"6/13/2023,334.470001\r\n",
"6/14/2023,334.339996\r\n",
"6/15/2023,337.480011\r\n",
"6/16/2023,351.320007\r\n",
"6/20/2023,339.309998\r\n",
"6/21/2023,336.369995\r\n",
"6/22/2023,334.119995\r\n",
"6/23/2023,334.359985\r\n",
"6/26/2023,333.720001\r\n",
"6/27/2023,331.859985\r\n",
"6/28/2023,334.660004\r\n",
"6/29/2023,334.709991\r\n",
"6/30/2023,337.750000\r\n",
"7/3/2023,339.190002\r\n",
"7/5/2023,335.089996\r\n",
"7/6/2023,337.299988\r\n",
"7/7/2023,339.320007\r\n",
"7/10/2023,334.600006\r\n",
"7/11/2023,331.059998\r\n",
"7/12/2023,336.600006\r\n",
"7/13/2023,339.559998\r\n",
"7/14/2023,347.589996\r\n",
"7/17/2023,345.679993\r\n",
"7/18/2023,345.829987\r\n",
"7/19/2023,361.750000\r\n",
"7/20/2023,353.570007\r\n",
"7/21/2023,349.149994\r\n",
"7/24/2023,345.850006\r\n",
"7/25/2023,347.109985\r\n",
"7/26/2023,341.440002\r\n",
"7/27/2023,340.480011\r\n",
"7/28/2023,333.670013\r\n",
"7/31/2023,336.920013\r\n",
"8/1/2023,335.190002\r\n",
"8/2/2023,333.630005\r\n",
"8/3/2023,326.000000\r\n",
"8/4/2023,331.880005\r\n",
"8/7/2023,328.369995\r\n",
"8/8/2023,326.959991\r\n",
"8/9/2023,326.470001\r\n",
"8/10/2023,326.019989\r\n",
"8/11/2023,320.260010\r\n",
"8/14/2023,321.390015\r\n",
"8/15/2023,323.000000\r\n",
"8/16/2023,320.799988\r\n",
"8/17/2023,320.540009\r\n",
"8/18/2023,314.489990\r\n",
"8/21/2023,317.929993\r\n",
"8/22/2023,325.500000\r\n",
"8/23/2023,323.820007\r\n",
"8/24/2023,332.850006\r\n",
"8/25/2023,321.470001\r\n",
"8/28/2023,325.660004\r\n",
"8/29/2023,321.880005\r\n",
"8/30/2023,328.670013\r\n",
"8/31/2023,329.200012\r\n",
"9/1/2023,331.309998\r\n",
"9/5/2023,329.000000\r\n",
"9/6/2023,333.380005\r\n",
"9/7/2023,331.290009\r\n",
"9/8/2023,330.089996\r\n",
"9/11/2023,337.239990\r\n",
"9/12/2023,335.820007\r\n",
"9/13/2023,331.309998\r\n",
"9/14/2023,339.149994\r\n",
"9/15/2023,336.920013\r\n",
"9/18/2023,327.799988\r\n",
"9/19/2023,326.170013\r\n",
"9/20/2023,329.510010\r\n",
"9/21/2023,319.260010\r\n",
"9/22/2023,321.320007\r\n",
"9/25/2023,316.589996\r\n",
"9/26/2023,315.130005\r\n",
"9/27/2023,312.299988\r\n",
"9/28/2023,310.989990\r\n",
"9/29/2023,317.750000\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-10-01\">Oct 01, 2018</time></td><td><div class=\"dni-plaintext\"><pre>114.750000</pre></div></td></tr><tr><td><time datetime=\"2018-10-02\">Oct 02, 2018</time></td><td><div class=\"dni-plaintext\"><pre>115.300003</pre></div></td></tr><tr><td><time datetime=\"2018-10-03\">Oct 03, 2018</time></td><td><div class=\"dni-plaintext\"><pre>115.419998</pre></div></td></tr><tr><td><time datetime=\"2018-10-04\">Oct 04, 2018</time></td><td><div class=\"dni-plaintext\"><pre>114.610001</pre></div></td></tr><tr><td><time datetime=\"2018-10-05\">Oct 05, 2018</time></td><td><div class=\"dni-plaintext\"><pre>112.629997</pre></div></td></tr><tr><td><time datetime=\"2018-10-08\">Oct 08, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.660004</pre></div></td></tr><tr><td><time datetime=\"2018-10-09\">Oct 09, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.139999</pre></div></td></tr><tr><td><time datetime=\"2018-10-10\">Oct 10, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.239998</pre></div></td></tr><tr><td><time datetime=\"2018-10-11\">Oct 11, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.349998</pre></div></td></tr><tr><td><time datetime=\"2018-10-12\">Oct 12, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.010002</pre></div></td></tr><tr><td><time datetime=\"2018-10-15\">Oct 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.910004</pre></div></td></tr><tr><td><time datetime=\"2018-10-16\">Oct 16, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.540001</pre></div></td></tr><tr><td><time datetime=\"2018-10-17\">Oct 17, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.680000</pre></div></td></tr><tr><td><time datetime=\"2018-10-18\">Oct 18, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.099998</pre></div></td></tr><tr><td><time datetime=\"2018-10-19\">Oct 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.930000</pre></div></td></tr><tr><td><time datetime=\"2018-10-22\">Oct 22, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.320000</pre></div></td></tr><tr><td><time datetime=\"2018-10-23\">Oct 23, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.769997</pre></div></td></tr><tr><td><time datetime=\"2018-10-24\">Oct 24, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.410004</pre></div></td></tr><tr><td><time datetime=\"2018-10-25\">Oct 25, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.550003</pre></div></td></tr><tr><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td></tr><tr><td colspan=\"2\"><i>(1238 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var data =\n",
" from fields in rows\n",
" //\n",
" // Note that while we don't use all the fields, the arity of the lambda\n",
" // must match the number of elements expected in the `fields` sequence,\n",
" // otherwise `Fold` will (by-design) throw an exception.\n",
" //\n",
" select fields.Fold((date, open, hi, lo, close, adjClose, vol) => new\n",
" {\n",
" Date = DateOnly.Parse(date, CultureInfo.InvariantCulture),\n",
" Price = decimal.Parse(open, CultureInfo.InvariantCulture),\n",
" });\n",
"\n",
"data.ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Nice, let's get the 20-day moving average of the opening price using [`Window`]. Remember, the 20-day moving average is our price trend indicator.\n",
"\n",
"[`Window`]: https://morelinq.github.io/4.0/ref/api/html/M_MoreLinq_MoreEnumerable_Window__1.htm"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price,Avg\r\n",
"10/26/2018,105.690002,110.40050045\r\n",
"10/29/2018,108.110001,110.0685005\r\n",
"10/30/2018,103.660004,109.48650055\r\n",
"10/31/2018,105.440002,108.98750075\r\n",
"11/1/2018,107.050003,108.60950085\r\n",
"11/2/2018,106.480003,108.30200115\r\n",
"11/5/2018,106.370003,108.0375011\r\n",
"11/6/2018,107.379997,107.849501\r\n",
"11/7/2018,109.440002,107.7595012\r\n",
"11/8/2018,111.800003,108.08200145\r\n",
"11/9/2018,110.849998,108.17400125\r\n",
"11/12/2018,109.419998,108.19950095\r\n",
"11/13/2018,107.550003,108.10000105\r\n",
"11/14/2018,108.099998,107.92100095\r\n",
"11/15/2018,104.989998,107.66550095\r\n",
"11/16/2018,107.080002,107.57300105\r\n",
"11/19/2018,108.269997,107.5205009\r\n",
"11/20/2018,101.800003,107.2220012\r\n",
"11/21/2018,103.599998,106.9815009\r\n",
"11/23/2018,102.169998,106.76250065\r\n",
"11/26/2018,104.790001,106.7175006\r\n",
"11/27/2018,106.269997,106.6255004\r\n",
"11/28/2018,107.889999,106.83700015\r\n",
"11/29/2018,110.330002,107.08150015\r\n",
"11/30/2018,110.699997,107.26399985\r\n",
"12/3/2018,113.000000,107.5899997\r\n",
"12/4/2018,111.940002,107.86849965\r\n",
"12/6/2018,105.820000,107.7904998\r\n",
"12/7/2018,108.379997,107.73749955\r\n",
"12/10/2018,104.800003,107.38749955\r\n",
"12/11/2018,109.800003,107.3349998\r\n",
"12/12/2018,110.889999,107.40849985\r\n",
"12/13/2018,109.580002,107.5099998\r\n",
"12/14/2018,108.250000,107.5174999\r\n",
"12/17/2018,105.410004,107.5385002\r\n",
"12/18/2018,103.750000,107.3720001\r\n",
"12/19/2018,103.650002,107.14100035\r\n",
"12/20/2018,103.050003,107.20350035\r\n",
"12/21/2018,101.629997,107.1050003\r\n",
"12/24/2018,97.680000,106.8805004\r\n",
"12/26/2018,95.139999,106.3980003\r\n",
"12/27/2018,99.300003,106.0495006\r\n",
"12/28/2018,102.089996,105.75950045\r\n",
"12/31/2018,101.290001,105.3075004\r\n",
"1/2/2019,99.550003,104.7500007\r\n",
"1/3/2019,100.099998,104.1050006\r\n",
"1/4/2019,99.720001,103.49400055\r\n",
"1/7/2019,101.639999,103.2850005\r\n",
"1/8/2019,103.040001,103.0180007\r\n",
"1/9/2019,103.860001,102.9710006\r\n",
"1/10/2019,103.220001,102.6420005\r\n",
"1/11/2019,103.190002,102.25700065\r\n",
"1/14/2019,101.900002,101.87300065\r\n",
"1/15/2019,102.510002,101.58600075\r\n",
"1/16/2019,105.260002,101.57850065\r\n",
"1/17/2019,105.000000,101.64100065\r\n",
"1/18/2019,107.459999,101.8315005\r\n",
"1/22/2019,106.750000,102.01650035\r\n",
"1/23/2019,106.120003,102.24100065\r\n",
"1/24/2019,106.860001,102.7000007\r\n",
"1/25/2019,107.239998,103.30500065\r\n",
"1/28/2019,106.260002,103.6530006\r\n",
"1/29/2019,104.879997,103.79250065\r\n",
"1/30/2019,104.620003,103.95900075\r\n",
"1/31/2019,103.800003,104.17150075\r\n",
"2/1/2019,103.779999,104.3555008\r\n",
"2/4/2019,102.870003,104.5130009\r\n",
"2/5/2019,106.059998,104.73400085\r\n",
"2/6/2019,107.000000,104.9320008\r\n",
"2/7/2019,105.190002,104.99850085\r\n",
"2/8/2019,104.389999,105.05700075\r\n",
"2/11/2019,106.199997,105.2075005\r\n",
"2/12/2019,106.139999,105.41950035\r\n",
"2/13/2019,107.500000,105.66900025\r\n",
"2/14/2019,106.309998,105.72150005\r\n",
"2/15/2019,107.910004,105.86700025\r\n",
"2/19/2019,107.790001,105.88350035\r\n",
"2/20/2019,107.860001,105.9390004\r\n",
"2/21/2019,106.900002,105.97800035\r\n",
"2/22/2019,110.050003,106.13750045\r\n",
"2/25/2019,111.760002,106.36350065\r\n",
"2/26/2019,111.260002,106.61350065\r\n",
"2/27/2019,111.690002,106.9540009\r\n",
"2/28/2019,112.040001,107.3250008\r\n",
"3/1/2019,112.889999,107.7795006\r\n",
"3/4/2019,113.019997,108.2415005\r\n",
"3/5/2019,112.250000,108.71050035\r\n",
"3/6/2019,111.870003,109.0010006\r\n",
"3/7/2019,111.400002,109.2210007\r\n",
"3/8/2019,109.160004,109.4195008\r\n",
"3/11/2019,110.989998,109.74950075\r\n",
"3/12/2019,112.820000,110.0805009\r\n",
"3/13/2019,114.129997,110.4800008\r\n",
"3/14/2019,114.540001,110.83200085\r\n",
"3/15/2019,115.339996,111.28350075\r\n",
"3/18/2019,116.169998,111.69650045\r\n",
"3/19/2019,118.089996,112.2115002\r\n",
"3/20/2019,117.389999,112.6880001\r\n",
"3/21/2019,117.139999,113.19999995\r\n",
"3/22/2019,119.500000,113.6724998\r\n",
"3/25/2019,116.559998,113.9124996\r\n",
"3/26/2019,118.620003,114.28049965\r\n",
"3/27/2019,117.879997,114.5899994\r\n",
"3/28/2019,117.440002,114.85999945\r\n",
"3/29/2019,118.070000,115.1189995\r\n",
"4/1/2019,118.949997,115.4154995\r\n",
"4/2/2019,119.059998,115.7559994\r\n",
"4/3/2019,119.860001,116.1554993\r\n",
"4/4/2019,120.099998,116.5904991\r\n",
"4/5/2019,119.389999,117.10199885\r\n",
"4/8/2019,119.809998,117.54299885\r\n",
"4/9/2019,118.629997,117.8334987\r\n",
"4/10/2019,119.760002,118.11499895\r\n",
"4/11/2019,120.540001,118.41499895\r\n",
"4/12/2019,120.639999,118.6799991\r\n",
"4/15/2019,120.940002,118.9184993\r\n",
"4/16/2019,121.639999,119.09599945\r\n",
"4/17/2019,121.239998,119.2884994\r\n",
"4/18/2019,122.190002,119.54099955\r\n",
"4/22/2019,122.620003,119.6969997\r\n",
"4/23/2019,124.099998,120.0739997\r\n",
"4/24/2019,125.790001,120.4324996\r\n",
"4/25/2019,130.059998,121.04149965\r\n",
"4/26/2019,129.699997,121.6544994\r\n",
"4/29/2019,129.899994,122.2459991\r\n",
"4/30/2019,129.809998,122.78899915\r\n",
"5/1/2019,130.529999,123.3624992\r\n",
"5/2/2019,127.980003,123.7684993\r\n",
"5/3/2019,127.360001,124.13149945\r\n",
"5/6/2019,126.389999,124.48149945\r\n",
"5/7/2019,126.459999,124.8139995\r\n",
"5/8/2019,125.440002,125.15449975\r\n",
"5/9/2019,124.290001,125.3809997\r\n",
"5/10/2019,124.910004,125.59949985\r\n",
"5/13/2019,124.110001,125.77299995\r\n",
"5/14/2019,123.870003,125.919500\r\n",
"5/15/2019,124.260002,126.05050015\r\n",
"5/16/2019,126.750000,126.32600025\r\n",
"5/17/2019,128.309998,126.63200005\r\n",
"5/20/2019,126.519997,126.82699975\r\n",
"5/21/2019,127.430000,126.99349985\r\n",
"5/22/2019,126.620003,127.03499995\r\n",
"5/23/2019,126.199997,126.8419999\r\n",
"5/24/2019,126.910004,126.70250025\r\n",
"5/28/2019,126.980003,126.5565007\r\n",
"5/29/2019,125.379997,126.33500065\r\n",
"5/30/2019,125.260002,126.0715008\r\n",
"5/31/2019,124.230003,125.8840008\r\n",
"6/3/2019,123.849998,125.70850065\r\n",
"6/4/2019,121.279999,125.45300065\r\n",
"6/5/2019,124.949997,125.37750055\r\n",
"6/6/2019,126.440002,125.42750055\r\n",
"6/7/2019,129.190002,125.6725006\r\n",
"6/10/2019,132.399994,126.0470001\r\n",
"6/11/2019,133.880005,126.5355003\r\n",
"6/12/2019,131.399994,126.91199985\r\n",
"6/13/2019,131.979996,127.29799955\r\n",
"6/14/2019,132.259995,127.5734993\r\n",
"6/17/2019,132.630005,127.78949965\r\n",
"6/18/2019,134.190002,128.1729999\r\n",
"6/19/2019,135.000000,128.5514999\r\n",
"6/20/2019,137.449997,129.0929996\r\n",
"6/21/2019,136.580002,129.61199985\r\n",
"6/24/2019,137.000000,130.11649965\r\n",
"6/25/2019,137.250000,130.6299995\r\n",
"6/26/2019,134.350006,131.07849995\r\n",
"6/27/2019,134.139999,131.5224998\r\n",
"6/28/2019,134.570007,132.039500\r\n",
"7/1/2019,136.630005,132.67850035\r\n",
"7/2/2019,136.119995,133.42050015\r\n",
"7/3/2019,136.800003,134.01300045\r\n",
"7/5/2019,135.940002,134.48800045\r\n",
"7/8/2019,136.399994,134.84850005\r\n",
"7/9/2019,136.000000,135.02850035\r\n",
"7/10/2019,137.130005,135.19100035\r\n",
"7/11/2019,138.199997,135.5310005\r\n",
"7/12/2019,138.850006,135.874501\r\n",
"7/15/2019,139.440002,136.23350135\r\n",
"7/16/2019,138.960007,136.55000145\r\n",
"7/17/2019,137.699997,136.7255012\r\n",
"7/18/2019,135.550003,136.75300135\r\n",
"7/19/2019,140.220001,136.89150155\r\n",
"7/22/2019,137.410004,136.93300165\r\n",
"7/23/2019,139.759995,137.0710014\r\n",
"7/24/2019,138.899994,137.1535011\r\n",
"7/25/2019,140.429993,137.45750045\r\n",
"7/26/2019,140.369995,137.76900025\r\n",
"7/29/2019,141.500000,138.1154999\r\n",
"7/30/2019,140.139999,138.2909996\r\n",
"7/31/2019,140.330002,138.50149995\r\n",
"8/1/2019,137.000000,138.5114998\r\n",
"8/2/2019,138.089996,138.6189995\r\n",
"8/5/2019,133.300003,138.46399995\r\n",
"8/6/2019,133.800003,138.3540001\r\n",
"8/7/2019,133.789993,138.1869995\r\n",
"8/8/2019,136.600006,138.10699995\r\n",
"8/9/2019,138.610001,138.0949997\r\n",
"8/12/2019,137.070007,137.97649995\r\n",
"8/13/2019,136.050003,137.83099975\r\n",
"8/14/2019,136.360001,137.76399995\r\n",
"8/15/2019,134.389999,137.70599975\r\n",
"8/16/2019,134.880005,137.43899995\r\n",
"8/19/2019,137.850006,137.46100005\r\n",
"8/20/2019,138.210007,137.38350065\r\n",
"8/21/2019,138.550003,137.3660011\r\n",
"8/22/2019,138.660004,137.27750165\r\n",
"8/23/2019,137.190002,137.118502\r\n",
"8/26/2019,134.990005,136.79300225\r\n",
"8/27/2019,136.389999,136.60550225\r\n",
"8/28/2019,134.880005,136.3330024\r\n",
"8/29/2019,137.250000,136.3455024\r\n",
"8/30/2019,139.149994,136.3985023\r\n",
"9/3/2019,136.610001,136.5640022\r\n",
"9/4/2019,137.300003,136.7390022\r\n",
"9/5/2019,139.110001,137.0050026\r\n",
"9/6/2019,140.029999,137.17650225\r\n",
"9/9/2019,139.589996,137.225502\r\n",
"9/10/2019,136.800003,137.2120018\r\n",
"9/11/2019,135.910004,137.20500185\r\n",
"9/12/2019,137.850006,137.2795021\r\n",
"9/13/2019,137.779999,137.4490021\r\n",
"9/16/2019,135.830002,137.49650195\r\n",
"9/17/2019,136.960007,137.452002\r\n",
"9/18/2019,137.360001,137.4095017\r\n",
"9/19/2019,140.300003,137.4970017\r\n",
"9/20/2019,141.009995,137.61450125\r\n",
"9/23/2019,139.229996,137.71650095\r\n",
"9/24/2019,140.360001,137.98500075\r\n",
"9/25/2019,137.500000,138.0405008\r\n",
"9/26/2019,139.440002,138.26850065\r\n",
"9/27/2019,140.149994,138.41350035\r\n",
"9/30/2019,138.050003,138.3585008\r\n",
"10/1/2019,139.660004,138.51100095\r\n",
"10/2/2019,136.250000,138.4585008\r\n",
"10/3/2019,134.949997,138.2505006\r\n",
"10/4/2019,136.750000,138.08650065\r\n",
"10/7/2019,137.139999,137.9640008\r\n",
"10/8/2019,137.080002,137.97800075\r\n",
"10/9/2019,137.460007,138.0555009\r\n",
"10/10/2019,138.490005,138.08750085\r\n",
"10/11/2019,140.119995,138.20450065\r\n",
"10/14/2019,139.690002,138.39750065\r\n",
"10/15/2019,140.059998,138.5525002\r\n",
"10/16/2019,140.789993,138.7239998\r\n",
"10/17/2019,140.949997,138.7564995\r\n",
"10/18/2019,139.759995,138.6939995\r\n",
"10/21/2019,138.449997,138.65499955\r\n",
"10/22/2019,138.970001,138.58549955\r\n",
"10/23/2019,136.880005,138.5544998\r\n",
"10/24/2019,139.389999,138.55199965\r\n",
"10/25/2019,139.339996,138.51149975\r\n",
"10/28/2019,144.399994,138.8289993\r\n",
"10/29/2019,144.080002,139.0499992\r\n",
"10/30/2019,143.520004,139.4134994\r\n",
"10/31/2019,144.899994,139.91099925\r\n",
"11/1/2019,144.259995,140.286499\r\n",
"11/4/2019,144.830002,140.67099915\r\n",
"11/5/2019,144.970001,141.0654991\r\n",
"11/6/2019,144.369995,141.4109985\r\n",
"11/7/2019,143.839996,141.67849805\r\n",
"11/8/2019,143.979996,141.8714981\r\n",
"11/11/2019,145.339996,142.1539978\r\n",
"11/12/2019,146.279999,142.46499785\r\n",
"11/13/2019,146.740005,142.76249845\r\n",
"11/14/2019,147.020004,143.0659988\r\n",
"11/15/2019,148.929993,143.5244987\r\n",
"11/18/2019,150.070007,144.1054992\r\n",
"11/19/2019,150.880005,144.7009994\r\n",
"11/20/2019,150.309998,145.37249905\r\n",
"11/21/2019,149.399994,145.8729988\r\n",
"11/22/2019,150.070007,146.40949935\r\n",
"11/25/2019,150.000000,146.68949965\r\n",
"11/26/2019,151.360001,147.0534996\r\n",
"11/27/2019,152.330002,147.4939995\r\n",
"11/29/2019,152.100006,147.8540001\r\n",
"12/2/2019,151.809998,148.23150025\r\n",
"12/3/2019,147.490005,148.3645004\r\n",
"12/4/2019,150.139999,148.6230003\r\n",
"12/5/2019,150.050003,148.9070007\r\n",
"12/6/2019,150.990005,149.26450115\r\n",
"12/9/2019,151.070007,149.6190017\r\n",
"12/10/2019,151.289993,149.91650155\r\n",
"12/11/2019,151.539993,150.17950125\r\n",
"12/12/2019,151.649994,150.4250007\r\n",
"12/13/2019,153.000000,150.7240005\r\n",
"12/16/2019,155.110001,151.0330009\r\n",
"12/17/2019,155.449997,151.3020004\r\n",
"12/18/2019,154.300003,151.4730003\r\n",
"12/19/2019,154.000000,151.6575004\r\n",
"12/20/2019,157.350006,152.055001\r\n",
"12/23/2019,158.119995,152.4575004\r\n",
"12/24/2019,157.479996,152.8315002\r\n",
"12/26/2019,157.559998,153.14150005\r\n",
"12/27/2019,159.449997,153.4974998\r\n",
"12/30/2019,158.990005,153.84199975\r\n",
"12/31/2019,156.770004,154.09000005\r\n",
"1/2/2020,158.779999,154.65449975\r\n",
"1/3/2020,158.320007,155.06350015\r\n",
"1/6/2020,157.080002,155.4150001\r\n",
"1/7/2020,159.320007,155.8315002\r\n",
"1/8/2020,158.929993,156.2244995\r\n",
"1/9/2020,161.839996,156.75199965\r\n",
"1/10/2020,162.820007,157.31600035\r\n",
"1/13/2020,161.759995,157.8215004\r\n",
"1/14/2020,163.389999,158.34100035\r\n",
"1/15/2020,162.619995,158.71650005\r\n",
"1/16/2020,164.350006,159.1615005\r\n",
"1/17/2020,167.419998,159.81750025\r\n",
"1/21/2020,166.679993,160.4514999\r\n",
"1/22/2020,167.399994,160.9539993\r\n",
"1/23/2020,166.190002,161.35749965\r\n",
"1/24/2020,167.509995,161.8589996\r\n",
"1/27/2020,161.149994,162.0384994\r\n",
"1/28/2020,163.779999,162.2549995\r\n",
"1/29/2020,167.839996,162.69749905\r\n",
"1/30/2020,174.050003,163.561499\r\n",
"1/31/2020,172.210007,164.2329994\r\n",
"2/3/2020,170.429993,164.8384987\r\n",
"2/4/2020,177.139999,165.84149855\r\n",
"2/5/2020,184.029999,167.07699815\r\n",
"2/6/2020,180.970001,168.17899855\r\n",
"2/7/2020,182.850006,169.22949905\r\n",
"2/10/2020,183.580002,170.2674988\r\n",
"2/11/2020,190.649994,171.71199875\r\n",
"2/12/2020,185.580002,172.8214989\r\n",
"2/13/2020,183.080002,173.84449925\r\n",
"2/14/2020,183.250000,174.78949895\r\n",
"2/18/2020,185.610001,175.6989991\r\n",
"2/19/2020,188.059998,176.76799935\r\n",
"2/20/2020,186.949997,177.7454995\r\n",
"2/21/2020,183.169998,178.5944993\r\n",
"2/24/2020,167.770004,178.60749975\r\n",
"2/25/2020,174.199997,179.2599999\r\n",
"2/26/2020,169.710007,179.5565003\r\n",
"2/27/2020,163.320007,179.33050085\r\n",
"2/28/2020,152.410004,178.2485009\r\n",
"3/2/2020,165.309998,177.90350045\r\n",
"3/3/2020,173.800003,178.07200095\r\n",
"3/4/2020,168.490005,177.63950125\r\n",
"3/5/2020,166.050003,176.74050145\r\n",
"3/6/2020,162.610001,175.82250145\r\n",
"3/9/2020,151.000000,174.23000115\r\n",
"3/10/2020,158.160004,172.95900125\r\n",
"3/11/2020,157.130005,171.2830018\r\n",
"3/12/2020,145.300003,169.26900185\r\n",
"3/13/2020,147.500000,167.49000175\r\n",
"3/16/2020,140.000000,165.32750175\r\n",
"3/17/2020,140.000000,163.0470017\r\n",
"3/18/2020,138.000000,160.5440018\r\n",
"3/19/2020,142.770004,158.33500215\r\n",
"3/20/2020,146.000000,156.47650225\r\n",
"3/23/2020,137.009995,154.9385018\r\n",
"3/24/2020,143.750000,153.41600195\r\n",
"3/25/2020,148.910004,152.3760018\r\n",
"3/26/2020,148.399994,151.63000115\r\n",
"3/27/2020,151.750000,151.59700095\r\n",
"3/30/2020,152.440002,150.95350115\r\n",
"3/31/2020,159.399994,150.2335007\r\n",
"4/1/2020,153.000000,149.45900045\r\n",
"4/2/2020,151.860001,148.74950035\r\n",
"4/3/2020,155.100006,148.3740006\r\n",
"4/6/2020,160.320007,148.84000095\r\n",
"4/7/2020,169.589996,149.41150055\r\n",
"4/8/2020,165.669998,149.8385002\r\n",
"4/9/2020,166.360001,150.8915001\r\n",
"4/13/2020,164.350006,151.7340004\r\n",
"4/14/2020,169.000000,153.1840004\r\n",
"4/15/2020,171.199997,154.74400025\r\n",
"4/16/2020,174.300003,156.5590004\r\n",
"4/17/2020,179.500000,158.3955002\r\n",
"4/20/2020,176.630005,159.92700045\r\n",
"4/21/2020,173.500000,161.7515007\r\n",
"4/22/2020,171.389999,163.13350065\r\n",
"4/23/2020,174.110001,164.3935005\r\n",
"4/24/2020,172.059998,165.5765007\r\n",
"4/27/2020,176.589996,166.8185005\r\n",
"4/28/2020,175.589996,167.9760002\r\n",
"4/29/2020,173.220001,168.66700055\r\n",
"4/30/2020,180.000000,170.01700055\r\n",
"5/1/2020,175.800003,171.21400065\r\n",
"5/4/2020,174.490005,172.1835006\r\n",
"5/5/2020,180.619995,173.198500\r\n",
"5/6/2020,182.080002,173.8230003\r\n",
"5/7/2020,184.169998,174.7480003\r\n",
"5/8/2020,184.979996,175.67900005\r\n",
"5/11/2020,183.149994,176.61899945\r\n",
"5/12/2020,186.800003,177.5089996\r\n",
"5/13/2020,182.550003,178.0764999\r\n",
"5/14/2020,177.539993,178.2384994\r\n",
"5/15/2020,179.059998,178.2164993\r\n",
"5/18/2020,185.750000,178.67249905\r\n",
"5/19/2020,185.029999,179.248999\r\n",
"5/20/2020,184.809998,179.91999895\r\n",
"5/21/2020,185.399994,180.4844986\r\n",
"5/22/2020,183.190002,181.0409988\r\n",
"5/26/2020,186.339996,181.5284988\r\n",
"5/27/2020,180.199997,181.75899885\r\n",
"5/28/2020,180.740005,182.13499905\r\n",
"5/29/2020,182.729996,182.27149885\r\n",
"6/1/2020,182.539993,182.60849835\r\n",
"6/2/2020,184.250000,183.0964981\r\n",
"6/3/2020,184.820007,183.3064987\r\n",
"6/4/2020,184.300003,183.41749875\r\n",
"6/5/2020,182.619995,183.3399986\r\n",
"6/8/2020,185.940002,183.3879989\r\n",
"6/9/2020,188.000000,183.6304992\r\n",
"6/10/2020,191.130005,183.8469993\r\n",
"6/11/2020,193.130005,184.3759994\r\n",
"6/12/2020,190.539993,185.0259994\r\n",
"6/15/2020,184.580002,185.3019996\r\n",
"6/16/2020,192.889999,185.65899955\r\n",
"6/17/2020,195.029999,186.15899955\r\n",
"6/18/2020,194.000000,186.61849965\r\n",
"6/19/2020,198.589996,187.27799975\r\n",
"6/22/2020,195.789993,187.9079993\r\n",
"6/23/2020,202.089996,188.6954993\r\n",
"6/24/2020,201.600006,189.76549975\r\n",
"6/25/2020,197.800003,190.61849965\r\n",
"6/26/2020,199.729996,191.46849965\r\n",
"6/29/2020,195.779999,192.13049995\r\n",
"6/30/2020,197.880005,192.8120002\r\n",
"7/1/2020,203.139999,193.7279998\r\n",
"7/2/2020,205.679993,194.7969993\r\n",
"7/6/2020,208.830002,196.10749965\r\n",
"7/7/2020,210.449997,197.3329994\r\n",
"7/8/2020,210.070007,198.43649975\r\n",
"7/9/2020,216.330002,199.6964996\r\n",
"7/10/2020,213.619995,200.7209991\r\n",
"7/13/2020,214.479996,201.91799925\r\n",
"7/14/2020,206.130005,202.9954994\r\n",
"7/15/2020,209.559998,203.82899935\r\n",
"7/16/2020,205.399994,204.3474991\r\n",
"7/17/2020,204.470001,204.87099915\r\n",
"7/20/2020,205.000000,205.19149935\r\n",
"7/21/2020,213.660004,206.0849999\r\n",
"7/22/2020,209.199997,206.44049995\r\n",
"7/23/2020,207.190002,206.71999975\r\n",
"7/24/2020,200.419998,206.8509995\r\n",
"7/27/2020,201.470001,206.93799975\r\n",
"7/28/2020,203.610001,207.32949985\r\n",
"7/29/2020,202.500000,207.5604996\r\n",
"7/30/2020,201.000000,207.45349965\r\n",
"7/31/2020,204.399994,207.3894997\r\n",
"8/3/2020,211.520004,207.5239998\r\n",
"8/4/2020,214.169998,207.70999985\r\n",
"8/5/2020,214.899994,207.9514992\r\n",
"8/6/2020,212.339996,207.7519989\r\n",
"8/7/2020,214.850006,207.81349945\r\n",
"8/10/2020,211.669998,207.67299955\r\n",
"8/11/2020,207.160004,207.7244995\r\n",
"8/12/2020,205.289993,207.51099925\r\n",
"8/13/2020,209.440002,207.71299965\r\n",
"8/14/2020,208.759995,207.92749935\r\n",
"8/17/2020,209.600006,208.15749965\r\n",
"8/18/2020,210.529999,208.0009994\r\n",
"8/19/2020,211.490005,208.1154998\r\n",
"8/20/2020,209.539993,208.23299935\r\n",
"8/21/2020,213.860001,208.9049995\r\n",
"8/24/2020,214.789993,209.5709991\r\n",
"8/25/2020,213.100006,210.04549935\r\n",
"8/26/2020,217.880005,210.8144996\r\n",
"8/27/2020,222.889999,211.90899955\r\n",
"8/28/2020,228.179993,213.0979995\r\n",
"8/31/2020,227.000000,213.8719993\r\n",
"9/1/2020,225.509995,214.43899915\r\n",
"9/2/2020,227.970001,215.0924995\r\n",
"9/3/2020,229.270004,215.9389999\r\n",
"9/4/2020,215.100006,215.9514999\r\n",
"9/8/2020,206.500000,215.693000\r\n",
"9/9/2020,207.600006,215.7150001\r\n",
"9/10/2020,213.399994,216.12050015\r\n",
"9/11/2020,207.199997,216.0084999\r\n",
"9/14/2020,204.240005,215.7825004\r\n",
"9/15/2020,208.419998,215.723500\r\n",
"9/16/2020,210.619995,215.7279998\r\n",
"9/17/2020,200.050003,215.1559997\r\n",
"9/18/2020,202.800003,214.8190002\r\n",
"9/21/2020,197.190002,213.98550025\r\n",
"9/22/2020,205.059998,213.4990005\r\n",
"9/23/2020,207.899994,213.2389999\r\n",
"9/24/2020,199.850006,212.33749995\r\n",
"9/25/2020,203.550003,211.37050015\r\n",
"9/28/2020,210.880005,210.50550075\r\n",
"9/29/2020,209.350006,209.62300105\r\n",
"9/30/2020,207.729996,208.7340011\r\n",
"10/1/2020,213.490005,208.0100013\r\n",
"10/2/2020,208.000000,206.9465011\r\n",
"10/5/2020,207.220001,206.55250085\r\n",
"10/6/2020,208.820007,206.6685012\r\n",
"10/7/2020,207.059998,206.6415008\r\n",
"10/8/2020,210.509995,206.49700085\r\n",
"10/9/2020,211.229996,206.6985008\r\n",
"10/12/2020,218.789993,207.4260002\r\n",
"10/13/2020,222.720001,208.14100035\r\n",
"10/14/2020,223.000000,208.7600006\r\n",
"10/15/2020,217.100006,209.61250075\r\n",
"10/16/2020,220.149994,210.4800003\r\n",
"10/19/2020,220.419998,211.6415001\r\n",
"10/20/2020,215.800003,212.17850035\r\n",
"10/21/2020,213.119995,212.4395004\r\n",
"10/22/2020,213.929993,213.14349975\r\n",
"10/23/2020,215.029999,213.71749955\r\n",
"10/26/2020,213.850006,213.8659996\r\n",
"10/27/2020,211.589996,213.9779991\r\n",
"10/28/2020,207.669998,213.9749992\r\n",
"10/29/2020,204.070007,213.5039993\r\n",
"10/30/2020,203.500000,213.2789993\r\n",
"11/2/2020,204.289993,213.1324989\r\n",
"11/3/2020,203.889999,212.8859985\r\n",
"11/4/2020,214.020004,213.2339988\r\n",
"11/5/2020,222.039993,213.8104987\r\n",
"11/6/2020,222.259995,214.36199865\r\n",
"11/9/2020,224.440002,214.6444991\r\n",
"11/10/2020,214.500000,214.23349905\r\n",
"11/11/2020,212.389999,213.702999\r\n",
"11/12/2020,217.210007,213.70849905\r\n",
"11/13/2020,216.360001,213.5189994\r\n",
"11/16/2020,214.869995,213.24149925\r\n",
"11/17/2020,216.100006,213.2564994\r\n",
"11/18/2020,213.649994,213.28299935\r\n",
"11/19/2020,211.380005,213.15549995\r\n",
"11/20/2020,212.199997,213.01399985\r\n",
"11/23/2020,210.949997,212.8689994\r\n",
"11/24/2020,209.589996,212.7689994\r\n",
"11/25/2020,215.110001,213.14099955\r\n",
"11/27/2020,214.850006,213.6799995\r\n",
"11/30/2020,214.100006,214.2099998\r\n",
"12/1/2020,214.509995,214.7209999\r\n",
"12/2/2020,214.880005,215.2705002\r\n",
"12/3/2020,214.610001,215.30000005\r\n",
"12/4/2020,214.220001,214.90900045\r\n",
"12/7/2020,214.369995,214.51450045\r\n",
"12/8/2020,213.970001,213.9910004\r\n",
"12/9/2020,215.160004,214.0240006\r\n",
"12/10/2020,211.770004,213.99300085\r\n",
"12/11/2020,210.050003,213.63500065\r\n",
"12/14/2020,213.100006,213.4720009\r\n",
"12/15/2020,215.169998,213.48700105\r\n",
"12/16/2020,214.750000,213.41950075\r\n",
"12/17/2020,219.869995,213.7305008\r\n",
"12/18/2020,218.589996,214.09100035\r\n",
"12/21/2020,217.550003,214.35850065\r\n",
"12/22/2020,222.690002,214.9455009\r\n",
"12/23/2020,223.110001,215.62150115\r\n",
"12/24/2020,221.419998,215.937001\r\n",
"12/28/2020,224.449997,216.41700055\r\n",
"12/29/2020,226.309998,217.02750015\r\n",
"12/30/2020,225.229996,217.5635002\r\n",
"12/31/2020,221.699997,217.9044998\r\n",
"1/4/2021,222.529999,218.3004997\r\n",
"1/5/2021,217.259995,218.4524994\r\n",
"1/6/2021,212.169998,218.34249955\r\n",
"1/7/2021,214.039993,218.34599915\r\n",
"1/8/2021,218.679993,218.5219986\r\n",
"1/11/2021,218.470001,218.85699845\r\n",
"1/12/2021,216.500000,219.1794983\r\n",
"1/13/2021,214.020004,219.2254982\r\n",
"1/14/2021,215.910004,219.2624985\r\n",
"1/15/2021,213.520004,219.2009987\r\n",
"1/19/2021,213.750000,218.89499895\r\n",
"1/20/2021,217.699997,218.850499\r\n",
"1/21/2021,224.699997,219.2079987\r\n",
"1/22/2021,227.080002,219.4274987\r\n",
"1/25/2021,229.119995,219.7279984\r\n",
"1/26/2021,231.860001,220.24999855\r\n",
"1/27/2021,238.000000,220.9274987\r\n",
"1/28/2021,235.610001,221.39249885\r\n",
"1/29/2021,235.990005,221.9304993\r\n",
"2/1/2021,235.059998,222.59849935\r\n",
"2/2/2021,241.300003,223.53699955\r\n",
"2/3/2021,239.570007,224.65250015\r\n",
"2/4/2021,242.660004,226.17700045\r\n",
"2/5/2021,242.229996,227.5865006\r\n",
"2/8/2021,243.149994,228.81000065\r\n",
"2/9/2021,241.869995,229.98000035\r\n",
"2/10/2021,245.000000,231.40500035\r\n",
"2/11/2021,244.779999,232.9430001\r\n",
"2/12/2021,243.929993,234.34399955\r\n",
"2/16/2021,245.029999,235.9194993\r\n",
"2/17/2021,241.320007,237.29799965\r\n",
"2/18/2021,241.800003,238.50299995\r\n",
"2/19/2021,243.750000,239.4555001\r\n",
"2/22/2021,237.419998,239.9724999\r\n",
"2/23/2021,230.330002,240.03300025\r\n",
"2/24/2021,230.009995,239.94049995\r\n",
"2/25/2021,232.080002,239.64450005\r\n",
"2/26/2021,231.529999,239.44049995\r\n",
"3/1/2021,235.899994,239.4359994\r\n",
"3/2/2021,237.009995,239.53349925\r\n",
"3/3/2021,232.160004,239.0764993\r\n",
"3/4/2021,226.740005,238.4349992\r\n",
"3/5/2021,229.520004,237.7779992\r\n",
"3/8/2021,231.369995,237.23499915\r\n",
"3/9/2021,232.880005,236.7214997\r\n",
"3/10/2021,237.000000,236.47799995\r\n",
"3/11/2021,234.960007,235.9760003\r\n",
"3/12/2021,234.009995,235.4375001\r\n",
"3/15/2021,234.960007,234.9890008\r\n",
"3/16/2021,236.279999,234.5515008\r\n",
"3/17/2021,236.149994,234.29300015\r\n",
"3/18/2021,232.559998,233.8309999\r\n",
"3/19/2021,231.020004,233.1945001\r\n",
"3/22/2021,230.270004,232.8370004\r\n",
"3/23/2021,237.490005,233.19500055\r\n",
"3/24/2021,237.850006,233.5870011\r\n",
"3/25/2021,235.300003,233.74800115\r\n",
"3/26/2021,231.550003,233.74900135\r\n",
"3/29/2021,236.589996,233.78350145\r\n",
"3/30/2021,233.529999,233.60950165\r\n",
"3/31/2021,232.910004,233.64700165\r\n",
"4/1/2021,238.470001,234.23350145\r\n",
"4/5/2021,242.759995,234.895501\r\n",
"4/6/2021,247.610001,235.7075013\r\n",
"4/7/2021,247.809998,236.45400095\r\n",
"4/8/2021,252.770004,237.24250115\r\n",
"4/9/2021,252.869995,238.13800055\r\n",
"4/12/2021,254.710007,239.17300115\r\n",
"4/13/2021,257.260010,240.2880013\r\n",
"4/14/2021,257.480011,241.3480019\r\n",
"4/15/2021,257.929993,242.43700185\r\n",
"4/16/2021,259.470001,243.782502\r\n",
"4/19/2021,260.190002,245.2410019\r\n",
"4/20/2021,257.820007,246.61850205\r\n",
"4/21/2021,258.940002,247.6910019\r\n",
"4/22/2021,260.209991,248.80900115\r\n",
"4/23/2021,257.880005,249.93800125\r\n",
"4/26/2021,261.660004,251.4435013\r\n",
"4/27/2021,261.579987,252.69300085\r\n",
"4/28/2021,256.079987,253.82050025\r\n",
"4/29/2021,255.460007,254.9480004\r\n",
"4/30/2021,249.740005,255.5115006\r\n",
"5/3/2021,253.399994,256.04350055\r\n",
"5/4/2021,250.970001,256.21150055\r\n",
"5/5/2021,249.059998,256.27400055\r\n",
"5/6/2021,246.449997,255.9580002\r\n",
"5/7/2021,252.149994,255.92200015\r\n",
"5/10/2021,250.869995,255.72999955\r\n",
"5/11/2021,244.550003,255.0944992\r\n",
"5/12/2021,242.169998,254.32899855\r\n",
"5/13/2021,241.800003,253.52249905\r\n",
"5/14/2021,245.580002,252.8279991\r\n",
"5/17/2021,246.550003,252.14599915\r\n",
"5/18/2021,246.270004,251.568499\r\n",
"5/19/2021,239.309998,250.5869988\r\n",
"5/20/2021,243.960007,249.7744996\r\n",
"5/21/2021,247.570007,249.2589997\r\n",
"5/24/2021,247.789993,248.56549915\r\n",
"5/25/2021,251.770004,248.075000\r\n",
"5/26/2021,251.429993,247.8425003\r\n",
"5/27/2021,251.169998,247.62799985\r\n",
"5/28/2021,251.000000,247.6909996\r\n",
"6/1/2021,251.229996,247.5824997\r\n",
"6/2/2021,248.130005,247.4404999\r\n",
"6/3/2021,245.220001,247.24850005\r\n",
"6/4/2021,247.759995,247.31399995\r\n",
"6/7/2021,249.979996,247.20550005\r\n",
"6/8/2021,255.160004,247.4200005\r\n",
"6/9/2021,253.809998,247.88300025\r\n",
"6/10/2021,254.289993,248.489000\r\n",
"6/11/2021,257.989990,249.29849935\r\n",
"6/14/2021,257.899994,249.91449895\r\n",
"6/15/2021,259.769989,250.57549825\r\n",
"6/16/2021,259.399994,251.23199775\r\n",
"6/17/2021,256.070007,252.0699982\r\n",
"6/18/2021,259.630005,252.8534981\r\n",
"6/21/2021,259.820007,253.4659981\r\n",
"6/22/2021,262.720001,254.2124985\r\n",
"6/23/2021,265.989990,254.9234978\r\n",
"6/24/2021,266.160004,255.65999835\r\n",
"6/25/2021,266.230011,256.412999\r\n",
"6/28/2021,266.190002,257.1724991\r\n",
"6/29/2021,268.869995,258.05449905\r\n",
"6/30/2021,270.690002,259.1824989\r\n",
"7/1/2021,269.609985,260.4019981\r\n",
"7/2/2021,272.820007,261.6549987\r\n",
"7/6/2021,278.029999,263.05749885\r\n",
"7/7/2021,279.399994,264.26949835\r\n",
"7/8/2021,276.899994,265.42399815\r\n",
"7/9/2021,275.720001,266.49549855\r\n",
"7/12/2021,279.160004,267.55399925\r\n",
"7/13/2021,277.519989,268.534999\r\n",
"7/14/2021,282.350006,269.66399985\r\n",
"7/15/2021,282.000000,270.79400015\r\n",
"7/16/2021,282.070007,272.09400015\r\n",
"7/19/2021,278.929993,273.05899955\r\n",
"7/20/2021,278.029999,273.96949915\r\n",
"7/21/2021,278.899994,274.7784988\r\n",
"7/22/2021,283.839996,275.6709991\r\n",
"7/23/2021,287.369995,276.73149865\r\n",
"7/26/2021,289.000000,277.8699981\r\n",
"7/27/2021,289.429993,279.03199765\r\n",
"7/28/2021,288.989990,280.0379974\r\n",
"7/29/2021,286.239990,280.8154968\r\n",
"7/30/2021,285.170013,281.5934982\r\n",
"8/2/2021,286.359985,282.2704971\r\n",
"8/3/2021,285.420013,282.6399978\r\n",
"8/4/2021,286.220001,282.98099815\r\n",
"8/5/2021,286.880005,283.4799987\r\n",
"8/6/2021,288.510010,284.11949915\r\n",
"8/9/2021,289.750000,284.64899895\r\n",
"8/10/2021,288.799988,285.2129989\r\n",
"8/11/2021,287.209991,285.45599815\r\n",
"8/12/2021,286.630005,285.6874984\r\n",
"8/13/2021,289.480011,286.0579986\r\n",
"8/16/2021,293.190002,286.77099905\r\n",
"8/17/2021,292.390015,287.48899985\r\n",
"8/18/2021,292.040009,288.1460006\r\n",
"8/19/2021,288.690002,288.3885009\r\n",
"8/20/2021,299.720001,289.0060012\r\n",
"8/23/2021,303.250000,289.7185012\r\n",
"8/24/2021,305.019989,290.498001\r\n",
"8/25/2021,304.299988,291.2635009\r\n",
"8/26/2021,300.989990,292.0010009\r\n",
"8/27/2021,298.989990,292.69199975\r\n",
"8/30/2021,301.119995,293.43000025\r\n",
"8/31/2021,304.420013,294.38000025\r\n",
"9/1/2021,302.869995,295.21249995\r\n",
"9/2/2021,302.200012,295.9785003\r\n",
"9/3/2021,300.989990,296.6024993\r\n",
"9/7/2021,301.010010,297.1654998\r\n",
"9/8/2021,299.779999,297.71450035\r\n",
"9/9/2021,300.820007,298.39500115\r\n",
"9/10/2021,298.420013,298.98450155\r\n",
"9/13/2021,297.549988,299.3880004\r\n",
"9/14/2021,299.559998,299.7065002\r\n",
"9/15/2021,303.260010,300.24999995\r\n",
"9/16/2021,303.760010,300.836000\r\n",
"9/17/2021,304.170013,301.61000055\r\n",
"9/20/2021,296.329987,301.44049985\r\n",
"9/21/2021,295.690002,301.06249995\r\n",
"9/22/2021,296.730011,300.64800105\r\n",
"9/23/2021,298.850006,300.37550195\r\n",
"9/24/2021,298.230011,300.237503\r\n",
"9/27/2021,296.140015,300.09500425\r\n",
"9/28/2021,289.799988,299.5290039\r\n",
"9/29/2021,285.100006,298.56300355\r\n",
"9/30/2021,285.709991,297.70500335\r\n",
"10/1/2021,282.119995,296.7010025\r\n",
"10/4/2021,287.399994,296.0215027\r\n",
"10/5/2021,284.049988,295.1735016\r\n",
"10/6/2021,285.779999,294.4735016\r\n",
"10/7/2021,295.179993,294.1915009\r\n",
"10/8/2021,296.220001,294.0815003\r\n",
"10/11/2021,292.920013,293.85000155\r\n",
"10/12/2021,295.339996,293.63900145\r\n",
"10/13/2021,294.910004,293.22150115\r\n",
"10/14/2021,299.209991,292.9940002\r\n",
"10/15/2021,302.339996,292.90249935\r\n",
"10/18/2021,303.570007,293.26450035\r\n",
"10/19/2021,308.350006,293.89750055\r\n",
"10/20/2021,309.209991,294.52149955\r\n",
"10/21/2021,307.170013,294.9374999\r\n",
"10/22/2021,310.399994,295.54599905\r\n",
"10/25/2021,309.359985,296.20699755\r\n",
"10/26/2021,311.000000,297.26699815\r\n",
"10/27/2021,316.000000,298.81199785\r\n",
"10/28/2021,324.329987,300.74299765\r\n",
"10/29/2021,324.130005,302.84349815\r\n",
"11/1/2021,331.359985,305.0414977\r\n",
"11/2/2021,330.309998,307.3544982\r\n",
"11/3/2021,333.899994,309.76049795\r\n",
"11/4/2021,332.890015,311.64599905\r\n",
"11/5/2021,338.510010,313.7604995\r\n",
"11/8/2021,337.299988,315.97949825\r\n",
"11/9/2021,337.109985,318.0679977\r\n",
"11/10/2021,334.570007,320.05099785\r\n",
"11/11/2021,331.250000,321.6529983\r\n",
"11/12/2021,333.920013,323.23199915\r\n",
"11/15/2021,337.540009,324.93049925\r\n",
"11/16/2021,335.679993,326.2969986\r\n",
"11/17/2021,338.940002,327.78349915\r\n",
"11/18/2021,338.179993,329.33399815\r\n",
"11/19/2021,342.640015,330.9459992\r\n",
"11/22/2021,344.619995,332.7089997\r\n",
"11/23/2021,337.049988,334.0114991\r\n",
"11/24/2021,336.279999,335.02549905\r\n",
"11/26/2021,334.350006,335.526500\r\n",
"11/29/2021,334.940002,336.06699985\r\n",
"11/30/2021,335.320007,336.26500095\r\n",
"12/1/2021,335.130005,336.5060013\r\n",
"12/2/2021,330.299988,336.326001\r\n",
"12/3/2021,331.989990,336.28099975\r\n",
"12/6/2021,323.950012,335.55299985\r\n",
"12/7/2021,331.640015,335.2700012\r\n",
"12/8/2021,335.309998,335.18000185\r\n",
"12/9/2021,334.410004,335.1720017\r\n",
"12/10/2021,334.980011,335.35850225\r\n",
"12/13/2021,340.679993,335.69650125\r\n",
"12/14/2021,333.220001,335.48050085\r\n",
"12/15/2021,328.609985,335.12700045\r\n",
"12/16/2021,335.709991,334.9654999\r\n",
"12/17/2021,320.880005,334.1005005\r\n",
"12/20/2021,320.049988,332.97099915\r\n",
"12/21/2021,323.290009,331.90449985\r\n",
"12/22/2021,328.299988,331.46699985\r\n",
"12/23/2021,332.750000,331.2904999\r\n",
"12/27/2021,335.459991,331.34599915\r\n",
"12/28/2021,343.149994,331.75649875\r\n",
"12/29/2021,341.299988,332.0554978\r\n",
"12/30/2021,341.910004,332.39449775\r\n",
"12/31/2021,338.510010,332.80499885\r\n",
"1/3/2022,335.350006,332.97299965\r\n",
"1/4/2022,334.829987,333.5169984\r\n",
"1/5/2022,325.859985,333.2279969\r\n",
"1/6/2022,313.149994,332.1199967\r\n",
"1/7/2022,314.149994,331.1069962\r\n",
"1/10/2022,309.489990,329.83249515\r\n",
"1/11/2022,313.380005,328.46749575\r\n",
"1/12/2022,319.670013,327.78999635\r\n",
"1/13/2022,320.470001,327.38299715\r\n",
"1/14/2022,304.250000,325.8099976\r\n",
"1/18/2022,304.070007,324.9694977\r\n",
"1/19/2022,306.290009,324.28149875\r\n",
"1/20/2022,309.070007,323.57049865\r\n",
"1/21/2022,302.690002,322.28999935\r\n",
"1/24/2022,292.200012,320.26249995\r\n",
"1/25/2022,291.519989,318.06549985\r\n",
"1/26/2022,307.989990,316.30749965\r\n",
"1/27/2022,302.660004,314.37550045\r\n",
"1/28/2022,300.230011,312.2915008\r\n",
"1/31/2022,308.950012,310.8135009\r\n",
"2/1/2022,310.410004,309.5665008\r\n",
"2/2/2022,309.630005,308.3065017\r\n",
"2/3/2022,309.489990,307.48800195\r\n",
"2/4/2022,300.209991,306.8410018\r\n",
"2/7/2022,306.170013,306.44200275\r\n",
"2/8/2022,301.250000,306.03000325\r\n",
"2/9/2022,309.869995,305.85450275\r\n",
"2/10/2022,304.040009,305.07300255\r\n",
"2/11/2022,303.190002,304.2090026\r\n",
"2/14/2022,293.769989,303.68500205\r\n",
"2/15/2022,300.010010,303.4820022\r\n",
"2/16/2022,298.369995,303.0860015\r\n",
"2/17/2022,296.359985,302.4505004\r\n",
"2/18/2022,293.049988,301.9684997\r\n",
"2/22/2022,285.000000,301.6084991\r\n",
"2/23/2022,290.179993,301.5414993\r\n",
"2/24/2022,272.510010,299.7675003\r\n",
"2/25/2022,295.140015,299.39150085\r\n",
"2/28/2022,294.309998,299.0955002\r\n",
"3/1/2022,296.399994,298.4679993\r\n",
"3/2/2022,295.359985,297.71549835\r\n",
"3/3/2022,302.890015,297.37849885\r\n",
"3/4/2022,294.290009,296.6184998\r\n",
"3/7/2022,288.529999,296.0345002\r\n",
"3/8/2022,277.799988,294.61599895\r\n",
"3/9/2022,283.440002,293.72549905\r\n",
"3/10/2022,283.019989,292.38299875\r\n",
"3/11/2022,287.959991,291.57899785\r\n",
"3/14/2022,280.339996,290.43649755\r\n",
"3/15/2022,280.350006,289.7654984\r\n",
"3/16/2022,289.109985,289.22049715\r\n",
"3/17/2022,293.290009,288.96649785\r\n",
"3/18/2022,295.369995,288.91699835\r\n",
"3/21/2022,298.890015,289.2089997\r\n",
"3/22/2022,299.799988,289.9489991\r\n",
"3/23/2022,300.510010,290.46549995\r\n",
"3/24/2022,299.140015,291.7970002\r\n",
"3/25/2022,305.230011,292.301500\r\n",
"3/28/2022,304.329987,292.80249945\r\n",
"3/29/2022,313.910004,293.67799995\r\n",
"3/30/2022,313.760010,294.5980012\r\n",
"3/31/2022,313.899994,295.14850015\r\n",
"4/1/2022,309.369995,295.90249945\r\n",
"4/4/2022,310.089996,296.9804993\r\n",
"4/5/2022,313.269989,298.75399935\r\n",
"4/6/2022,305.190002,299.84149935\r\n",
"4/7/2022,296.660004,300.5235001\r\n",
"4/8/2022,300.440002,301.14750065\r\n",
"4/11/2022,291.790009,301.7200013\r\n",
"4/12/2022,289.239990,302.1645005\r\n",
"4/13/2022,282.730011,301.8455018\r\n",
"4/14/2022,288.089996,301.58550115\r\n",
"4/18/2022,278.910004,300.7625016\r\n",
"4/19/2022,279.380005,299.7870011\r\n",
"4/20/2022,289.399994,299.2670014\r\n",
"4/21/2022,288.579987,298.67050025\r\n",
"4/22/2022,281.679993,297.79749915\r\n",
"4/25/2022,273.290009,296.20049905\r\n",
"4/26/2022,277.500000,294.8589997\r\n",
"4/27/2022,282.100006,293.2684998\r\n",
"4/28/2022,285.190002,291.8399994\r\n",
"4/29/2022,288.609985,290.57549895\r\n",
"5/2/2022,277.709991,288.99249875\r\n",
"5/3/2022,283.959991,287.6859985\r\n",
"5/4/2022,282.589996,286.15199885\r\n",
"5/5/2022,285.540009,285.1694992\r\n",
"5/6/2022,274.809998,284.0769989\r\n",
"5/9/2022,270.059998,282.5579987\r\n",
"5/10/2022,271.690002,281.55299835\r\n",
"5/11/2022,265.679993,280.3749985\r\n",
"5/12/2022,257.690002,279.12299805\r\n",
"5/13/2022,257.350006,277.58599855\r\n",
"5/16/2022,259.959991,276.6384979\r\n",
"5/17/2022,266.109985,275.9749969\r\n",
"5/18/2022,263.000000,274.6549972\r\n",
"5/19/2022,253.899994,272.92099755\r\n",
"5/20/2022,257.239990,271.6989974\r\n",
"5/23/2022,255.490005,270.8089972\r\n",
"5/24/2022,257.890015,269.82849795\r\n",
"5/25/2022,258.140015,268.6304984\r\n",
"5/26/2022,262.269989,267.48449775\r\n",
"5/27/2022,268.480011,266.47799905\r\n",
"5/31/2022,272.529999,266.21899945\r\n",
"6/1/2022,275.200012,265.7810005\r\n",
"6/2/2022,264.450012,264.8740013\r\n",
"6/3/2022,270.309998,264.11250075\r\n",
"6/6/2022,272.059998,263.97500075\r\n",
"6/7/2022,266.640015,263.8040016\r\n",
"6/8/2022,271.709991,263.80500105\r\n",
"6/9/2022,267.779999,263.91000135\r\n",
"6/10/2022,260.579987,264.0545006\r\n",
"6/13/2022,245.110001,263.44250035\r\n",
"6/14/2022,243.860001,262.63750085\r\n",
"6/15/2022,248.309998,261.7475015\r\n",
"6/16/2022,245.979996,260.8965013\r\n",
"6/17/2022,244.699997,260.43650145\r\n",
"6/21/2022,250.259995,260.0875017\r\n",
"6/22/2022,251.889999,259.9075014\r\n",
"6/23/2022,255.570007,259.791501\r\n",
"6/24/2022,261.809998,259.97500015\r\n",
"6/27/2022,268.209991,260.27200025\r\n",
"6/28/2022,263.980011,260.04700025\r\n",
"6/29/2022,257.589996,259.3000001\r\n",
"6/30/2022,257.049988,258.3924989\r\n",
"7/1/2022,256.390015,257.98949905\r\n",
"7/5/2022,256.160004,257.28199935\r\n",
"7/6/2022,263.750000,256.86649945\r\n",
"7/7/2022,265.119995,256.79049845\r\n",
"7/8/2022,264.790009,256.44449935\r\n",
"7/11/2022,265.649994,256.3379991\r\n",
"7/12/2022,265.880005,256.603000\r\n",
"7/13/2022,250.190002,256.85700005\r\n",
"7/14/2022,250.570007,257.19250035\r\n",
"7/15/2022,255.720001,257.5630005\r\n",
"7/18/2022,259.750000,258.2515007\r\n",
"7/19/2022,257.579987,258.8955002\r\n",
"7/20/2022,259.899994,259.37750015\r\n",
"7/21/2022,259.790009,259.77250065\r\n",
"7/22/2022,265.239990,260.2559998\r\n",
"7/25/2022,261.000000,260.2154999\r\n",
"7/26/2022,259.859985,259.7979996\r\n",
"7/27/2022,261.160004,259.65699925\r\n",
"7/28/2022,269.750000,260.26499945\r\n",
"7/29/2022,277.700012,261.29750065\r\n",
"8/1/2022,277.820007,262.36900025\r\n",
"8/2/2022,276.000000,263.36100005\r\n",
"8/3/2022,276.760010,264.01150055\r\n",
"8/4/2022,281.799988,264.8455002\r\n",
"8/5/2022,279.149994,265.56349945\r\n",
"8/8/2022,284.049988,266.48349915\r\n",
"8/9/2022,279.640015,267.17149965\r\n",
"8/10/2022,288.170013,269.0705002\r\n",
"8/11/2022,290.850006,271.08450015\r\n",
"8/12/2022,288.480011,272.72250065\r\n",
"8/15/2022,291.000000,274.28500065\r\n",
"8/16/2022,291.989990,276.0055008\r\n",
"8/17/2022,289.739990,277.4975006\r\n",
"8/18/2022,290.190002,279.01750025\r\n",
"8/19/2022,288.899994,280.20050045\r\n",
"8/22/2022,282.079987,281.2544998\r\n",
"8/23/2022,276.440002,282.08350065\r\n",
"8/24/2022,275.410004,282.79600065\r\n",
"8/25/2022,277.329987,283.175000\r\n",
"8/26/2022,279.079987,283.24399875\r\n",
"8/29/2022,265.850006,282.6454987\r\n",
"8/30/2022,266.670013,282.17899935\r\n",
"8/31/2022,265.390015,281.6104996\r\n",
"9/1/2022,258.869995,280.46399995\r\n",
"9/2/2022,261.700012,279.59150085\r\n",
"9/6/2022,256.200012,278.19900205\r\n",
"9/7/2022,254.699997,276.95200115\r\n",
"9/8/2022,257.510010,275.419001\r\n",
"9/9/2022,260.500000,273.9015007\r\n",
"9/12/2022,265.779999,272.7665001\r\n",
"9/13/2022,258.839996,271.1584999\r\n",
"9/14/2022,253.529999,269.23550035\r\n",
"9/15/2022,249.770004,267.23700105\r\n",
"9/16/2022,244.259995,264.9405007\r\n",
"9/19/2022,242.470001,262.61900105\r\n",
"9/20/2022,242.070007,260.61850205\r\n",
"9/21/2022,244.270004,259.01000215\r\n",
"9/22/2022,237.869995,257.1330017\r\n",
"9/23/2022,239.539993,255.243502\r\n",
"9/26/2022,237.050003,253.1420028\r\n",
"9/27/2022,239.979996,251.8485023\r\n",
"9/28/2022,236.809998,250.35550155\r\n",
"9/29/2022,238.889999,249.03050075\r\n",
"9/30/2022,238.289993,248.00150065\r\n",
"10/3/2022,235.410004,246.68700025\r\n",
"10/4/2022,245.089996,246.13149945\r\n",
"10/5/2022,245.990005,245.69599985\r\n",
"10/6/2022,247.929993,245.216999\r\n",
"10/7/2022,240.899994,244.2369987\r\n",
"10/10/2022,233.050003,242.6004989\r\n",
"10/11/2022,227.619995,241.03949885\r\n",
"10/12/2022,225.399994,239.6329986\r\n",
"10/13/2022,219.850006,238.1369987\r\n",
"10/14/2022,235.539993,237.7009986\r\n",
"10/17/2022,235.820007,237.3684989\r\n",
"10/18/2022,243.240005,237.4269988\r\n",
"10/19/2022,237.039993,237.06549825\r\n",
"10/20/2022,235.770004,236.9604987\r\n",
"10/21/2022,234.740005,236.7204993\r\n",
"10/24/2022,243.759995,237.0559989\r\n",
"10/25/2022,247.259995,237.41999885\r\n",
"10/26/2022,231.169998,237.13799885\r\n",
"10/27/2022,231.039993,236.74549855\r\n",
"10/28/2022,226.240005,236.14299915\r\n",
"10/31/2022,233.759995,236.0604987\r\n",
"11/1/2022,234.600006,235.5359992\r\n",
"11/2/2022,229.460007,234.7094993\r\n",
"11/3/2022,220.089996,233.31749945\r\n",
"11/4/2022,217.550003,232.1499999\r\n",
"11/7/2022,221.990005,231.597000\r\n",
"11/8/2022,228.699997,231.6510001\r\n",
"11/9/2022,227.369995,231.74950015\r\n",
"11/10/2022,235.429993,232.5284995\r\n",
"11/11/2022,242.990005,232.9010001\r\n",
"11/14/2022,241.990005,233.209500\r\n",
"11/15/2022,245.660004,233.33049995\r\n",
"11/16/2022,242.789993,233.61799995\r\n",
"11/17/2022,237.779999,233.7184997\r\n",
"11/18/2022,243.509995,234.1569992\r\n",
"11/21/2022,241.429993,234.0404991\r\n",
"11/22/2022,243.589996,233.85699915\r\n",
"11/23/2022,245.110001,234.5539993\r\n",
"11/25/2022,247.309998,235.36749955\r\n",
"11/28/2022,246.080002,236.3594994\r\n",
"11/29/2022,241.399994,236.74149935\r\n",
"11/30/2022,240.570007,237.0399994\r\n",
"12/1/2022,253.869995,238.2604988\r\n",
"12/2/2022,249.820007,239.74699935\r\n",
"12/5/2022,252.009995,241.46999895\r\n",
"12/6/2022,250.820007,242.91149905\r\n",
"12/7/2022,244.830002,243.7179993\r\n",
"12/8/2022,244.839996,244.59149935\r\n",
"12/9/2022,244.699997,245.05499955\r\n",
"12/12/2022,247.449997,245.27799915\r\n",
"12/13/2022,261.690002,246.262999\r\n",
"12/14/2022,257.130005,246.83649905\r\n",
"12/15/2022,253.720001,247.38299945\r\n",
"12/16/2022,248.550003,247.92149965\r\n",
"12/19/2022,244.860001,247.98899995\r\n",
"12/20/2022,239.399994,247.887500\r\n",
"12/21/2022,241.690002,247.7925003\r\n",
"12/22/2022,241.259995,247.600000\r\n",
"12/23/2022,236.110001,247.04000015\r\n",
"12/27/2022,238.699997,246.6709999\r\n",
"12/28/2022,236.889999,246.44550015\r\n",
"12/29/2022,235.649994,246.1994995\r\n",
"12/30/2022,238.210007,245.4165001\r\n",
"1/3/2023,243.080002,245.07949985\r\n",
"1/4/2023,232.279999,244.09300005\r\n",
"1/5/2023,227.199997,242.91199955\r\n",
"1/6/2023,223.000000,241.82049945\r\n",
"1/9/2023,226.449997,240.9009995\r\n",
"1/10/2023,227.759995,240.0539994\r\n",
"1/11/2023,231.289993,239.2459992\r\n",
"1/12/2023,235.259995,237.92449885\r\n",
"1/13/2023,237.000000,236.9179986\r\n",
"1/17/2023,237.970001,236.1304986\r\n",
"1/18/2023,241.570007,235.7814988\r\n",
"1/19/2023,233.779999,235.2274987\r\n",
"1/20/2023,234.860001,235.00049905\r\n",
"1/23/2023,241.100006,234.97099925\r\n",
"1/24/2023,242.500000,235.0329995\r\n",
"1/25/2023,234.479996,234.95149925\r\n",
"1/26/2023,243.649994,235.1989991\r\n",
"1/27/2023,248.990005,235.8039994\r\n",
"1/30/2023,244.509995,236.24699945\r\n",
"1/31/2023,243.449997,236.50899895\r\n",
"2/1/2023,248.000000,236.75499885\r\n",
"2/2/2023,258.820007,238.08199925\r\n",
"2/3/2023,259.540009,239.69899985\r\n",
"2/6/2023,257.440002,241.42099995\r\n",
"2/7/2023,260.529999,243.12500005\r\n",
"2/8/2023,273.200012,245.3970009\r\n",
"2/9/2023,273.799988,247.52250065\r\n",
"2/10/2023,261.529999,248.83600085\r\n",
"2/13/2023,267.640015,250.3680016\r\n",
"2/14/2023,272.670013,252.1030022\r\n",
"2/15/2023,268.320007,253.4405022\r\n",
"2/16/2023,264.019989,254.9525017\r\n",
"2/17/2023,259.390015,256.1790024\r\n",
"2/21/2023,254.479996,256.8480019\r\n",
"2/22/2023,254.089996,257.4275017\r\n",
"2/23/2023,255.559998,258.4815018\r\n",
"2/24/2023,249.960007,258.79700245\r\n",
"2/27/2023,252.460007,258.97050255\r\n",
"2/28/2023,249.070007,259.19850315\r\n",
"3/1/2023,250.759995,259.56400305\r\n",
"3/2/2023,246.550003,259.4915032\r\n",
"3/3/2023,252.190002,259.16000295\r\n",
"3/6/2023,256.429993,259.00450215\r\n",
"3/7/2023,256.299988,258.94750145\r\n",
"3/8/2023,254.039993,258.62300115\r\n",
"3/9/2023,255.820007,257.7540009\r\n",
"3/10/2023,251.080002,256.6180016\r\n",
"3/13/2023,247.399994,255.91150135\r\n",
"3/14/2023,256.750000,255.3670006\r\n",
"3/15/2023,259.980011,254.7325005\r\n",
"3/16/2023,265.209991,254.5769997\r\n",
"3/17/2023,278.260010,255.28900075\r\n",
"3/20/2023,276.980011,256.16850055\r\n",
"3/21/2023,274.880005,257.188501\r\n",
"3/22/2023,273.399994,258.1540009\r\n",
"3/23/2023,277.940002,259.2730011\r\n",
"3/24/2023,277.239990,260.63700025\r\n",
"3/27/2023,280.500000,262.0389999\r\n",
"3/28/2023,275.790009,263.375000\r\n",
"3/29/2023,278.959991,264.7849998\r\n",
"3/30/2023,284.230011,266.6690002\r\n",
"3/31/2023,283.730011,268.24600065\r\n",
"4/3/2023,286.519989,269.75050045\r\n",
"4/4/2023,287.230011,271.2970016\r\n",
"4/5/2023,285.850006,272.88750225\r\n",
"4/6/2023,283.209991,274.25700145\r\n",
"4/10/2023,289.209991,276.1635009\r\n",
"4/11/2023,285.750000,278.0810012\r\n",
"4/12/2023,284.790009,279.48300165\r\n",
"4/13/2023,283.589996,280.6635009\r\n",
"4/14/2023,287.000000,281.75300135\r\n",
"4/17/2023,289.929993,282.3365005\r\n",
"4/18/2023,291.570007,283.0660003\r\n",
"4/19/2023,285.989990,283.62149955\r\n",
"4/20/2023,285.250000,284.21399985\r\n",
"4/21/2023,285.010010,284.56750025\r\n",
"4/24/2023,282.089996,284.81000055\r\n",
"4/25/2023,279.510010,284.76050105\r\n",
"4/26/2023,296.700012,285.8060012\r\n",
"4/27/2023,295.970001,286.6565017\r\n",
"4/28/2023,304.010010,287.64550165\r\n",
"5/1/2023,306.970001,288.80750115\r\n",
"5/2/2023,307.760010,289.8695022\r\n",
"5/3/2023,306.619995,290.8390014\r\n",
"5/4/2023,306.239990,291.8585006\r\n",
"5/5/2023,305.720001,292.9840011\r\n",
"5/8/2023,310.130005,294.0300018\r\n",
"5/9/2023,308.000000,295.1425018\r\n",
"5/10/2023,308.619995,296.3340011\r\n",
"5/11/2023,310.100006,297.6595016\r\n",
"5/12/2023,310.549988,298.837001\r\n",
"5/15/2023,309.100006,299.79550165\r\n",
"5/16/2023,309.829987,300.70850065\r\n",
"5/17/2023,312.290009,302.0235016\r\n",
"5/18/2023,314.529999,303.48750155\r\n",
"5/19/2023,316.739990,305.07400055\r\n",
"5/22/2023,318.600006,306.89950105\r\n",
"5/23/2023,320.029999,308.9255005\r\n",
"5/24/2023,314.730011,309.82700045\r\n",
"5/25/2023,323.239990,311.1904999\r\n",
"5/26/2023,324.019989,312.19099885\r\n",
"5/30/2023,335.230011,313.60399935\r\n",
"5/31/2023,332.290009,314.8304993\r\n",
"6/1/2023,325.929993,315.7959992\r\n",
"6/2/2023,334.250000,317.1964997\r\n",
"6/5/2023,335.220001,318.6714997\r\n",
"6/6/2023,335.329987,319.9314988\r\n",
"6/7/2023,331.649994,321.1139985\r\n",
"6/8/2023,323.940002,321.87999885\r\n",
"6/9/2023,324.989990,322.62449805\r\n",
"6/12/2023,328.579987,323.525998\r\n",
"6/13/2023,334.470001,324.79449775\r\n",
"6/14/2023,334.339996,326.0199982\r\n",
"6/15/2023,337.480011,327.2794983\r\n",
"6/16/2023,351.320007,329.1189987\r\n",
"6/20/2023,339.309998,330.2474991\r\n",
"6/21/2023,336.369995,331.13599855\r\n",
"6/22/2023,334.119995,331.84049835\r\n",
"6/23/2023,334.359985,332.82199705\r\n",
"6/26/2023,333.720001,333.3459976\r\n",
"6/27/2023,331.859985,333.7379974\r\n",
"6/28/2023,334.660004,333.70949705\r\n",
"6/29/2023,334.709991,333.83049615\r\n",
"6/30/2023,337.750000,334.4214965\r\n",
"7/3/2023,339.190002,334.6684966\r\n",
"7/5/2023,335.089996,334.66199635\r\n",
"7/6/2023,337.299988,334.7604964\r\n",
"7/7/2023,339.320007,335.14399705\r\n",
"7/10/2023,334.600006,335.67699725\r\n",
"7/11/2023,331.059998,335.98049765\r\n",
"7/12/2023,336.600006,336.3814986\r\n",
"7/13/2023,339.559998,336.63599845\r\n",
"7/14/2023,347.589996,337.29849845\r\n",
"7/17/2023,345.679993,337.70849755\r\n",
"7/18/2023,345.829987,337.43399655\r\n",
"7/19/2023,361.750000,338.55599665\r\n",
"7/20/2023,353.570007,339.41599725\r\n",
"7/21/2023,349.149994,340.1674972\r\n",
"7/24/2023,345.850006,340.74199825\r\n",
"7/25/2023,347.109985,341.41149745\r\n",
"7/26/2023,341.440002,341.8904983\r\n",
"7/27/2023,340.480011,342.18149865\r\n",
"7/28/2023,333.670013,342.12949975\r\n",
"7/31/2023,336.920013,342.0880004\r\n",
"8/1/2023,335.190002,341.8880004\r\n",
"8/2/2023,333.630005,341.81500085\r\n",
"8/3/2023,326.000000,341.25000145\r\n",
"8/4/2023,331.880005,340.87800135\r\n",
"8/7/2023,328.369995,340.5665008\r\n",
"8/8/2023,326.959991,340.36150045\r\n",
"8/9/2023,326.470001,339.8550002\r\n",
"8/10/2023,326.019989,339.17799975\r\n",
"8/11/2023,320.260010,337.81150045\r\n",
"8/14/2023,321.390015,336.59700155\r\n",
"8/15/2023,323.000000,335.4555022\r\n",
"8/16/2023,320.799988,333.4080016\r\n",
"8/17/2023,320.540009,331.7565017\r\n",
"8/18/2023,314.489990,330.0235015\r\n",
"8/21/2023,317.929993,328.62750085\r\n",
"8/22/2023,325.500000,327.5470016\r\n",
"8/23/2023,323.820007,326.66600185\r\n",
"8/24/2023,332.850006,326.2845016\r\n",
"8/25/2023,321.470001,325.674501\r\n",
"8/28/2023,325.660004,325.11150055\r\n",
"8/29/2023,321.880005,324.4460007\r\n",
"8/30/2023,328.670013,324.1980011\r\n",
"8/31/2023,329.200012,324.3580017\r\n",
"9/1/2023,331.309998,324.32950135\r\n",
"9/5/2023,329.000000,324.3610016\r\n",
"9/6/2023,333.380005,324.6820023\r\n",
"9/7/2023,331.290009,324.9230027\r\n",
"9/8/2023,330.089996,325.12650305\r\n",
"9/11/2023,337.239990,325.97550205\r\n",
"9/12/2023,335.820007,326.69700165\r\n",
"9/13/2023,331.309998,327.11250155\r\n",
"9/14/2023,339.149994,328.03000185\r\n",
"9/15/2023,336.920013,328.84900205\r\n",
"9/18/2023,327.799988,329.51450195\r\n",
"9/19/2023,326.170013,329.92650295\r\n",
"9/20/2023,329.510010,330.12700345\r\n",
"9/21/2023,319.260010,329.8990036\r\n",
"9/22/2023,321.320007,329.32250365\r\n",
"9/25/2023,316.589996,329.0785034\r\n",
"9/26/2023,315.130005,328.55200345\r\n",
"9/27/2023,312.299988,328.0730026\r\n",
"9/28/2023,310.989990,327.18900145\r\n",
"9/29/2023,317.750000,326.61650085\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td><td><span>Avg</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td><td><div class=\"dni-plaintext\"><pre>110.40050045</pre></div></td></tr><tr><td><time datetime=\"2018-10-29\">Oct 29, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.110001</pre></div></td><td><div class=\"dni-plaintext\"><pre>110.0685005</pre></div></td></tr><tr><td><time datetime=\"2018-10-30\">Oct 30, 2018</time></td><td><div class=\"dni-plaintext\"><pre>103.660004</pre></div></td><td><div class=\"dni-plaintext\"><pre>109.48650055</pre></div></td></tr><tr><td><time datetime=\"2018-10-31\">Oct 31, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>108.98750075</pre></div></td></tr><tr><td><time datetime=\"2018-11-01\">Nov 01, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.050003</pre></div></td><td><div class=\"dni-plaintext\"><pre>108.60950085</pre></div></td></tr><tr><td><time datetime=\"2018-11-02\">Nov 02, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.480003</pre></div></td><td><div class=\"dni-plaintext\"><pre>108.30200115</pre></div></td></tr><tr><td><time datetime=\"2018-11-05\">Nov 05, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.370003</pre></div></td><td><div class=\"dni-plaintext\"><pre>108.0375011</pre></div></td></tr><tr><td><time datetime=\"2018-11-06\">Nov 06, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.379997</pre></div></td><td><div class=\"dni-plaintext\"><pre>107.849501</pre></div></td></tr><tr><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>107.7595012</pre></div></td></tr><tr><td><time datetime=\"2018-11-08\">Nov 08, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>108.08200145</pre></div></td></tr><tr><td><time datetime=\"2018-11-09\">Nov 09, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.849998</pre></div></td><td><div class=\"dni-plaintext\"><pre>108.17400125</pre></div></td></tr><tr><td><time datetime=\"2018-11-12\">Nov 12, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.419998</pre></div></td><td><div class=\"dni-plaintext\"><pre>108.19950095</pre></div></td></tr><tr><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td><td><div class=\"dni-plaintext\"><pre>108.10000105</pre></div></td></tr><tr><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td><td><div class=\"dni-plaintext\"><pre>107.92100095</pre></div></td></tr><tr><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td><td><div class=\"dni-plaintext\"><pre>107.66550095</pre></div></td></tr><tr><td><time datetime=\"2018-11-16\">Nov 16, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.080002</pre></div></td><td><div class=\"dni-plaintext\"><pre>107.57300105</pre></div></td></tr><tr><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>107.5205009</pre></div></td></tr><tr><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>107.2220012</pre></div></td></tr><tr><td><time datetime=\"2018-11-21\">Nov 21, 2018</time></td><td><div class=\"dni-plaintext\"><pre>103.599998</pre></div></td><td><div class=\"dni-plaintext\"><pre>106.9815009</pre></div></td></tr><tr><td><time datetime=\"2018-11-23\">Nov 23, 2018</time></td><td><div class=\"dni-plaintext\"><pre>102.169998</pre></div></td><td><div class=\"dni-plaintext\"><pre>106.76250065</pre></div></td></tr><tr><td colspan=\"3\"><i>(1219 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var mavg =\n",
" from w in data.Window(20)\n",
" select new\n",
" {\n",
" w[^1].Date, // last date in window\n",
" w[^1].Price, // last price in window\n",
" Avg = w.Average(e => e.Price),\n",
" };\n",
"\n",
"mavg.ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `Window` extension essentially gives us a _scrolling window_ of a specific size over the sequence such that if you have a sequence of integers like `[1, 2, 3, 4, 5]` and you call `Window(3)` on it, then you'll get back the sequence `[[1, 2, 3], [2, 3, 4], [3, 4, 5]]`. If the source sequence is smaller than the window size, then `Window` will return an empty sequence, which is generally what you want when dealing with averages. If you want partial windows for other use cases, MoreLINQ offers [`WindowLeft`] and [`WindowRight`].\n",
"\n",
"[`WindowLeft`]: https://morelinq.github.io/4.0/ref/api/html/M_MoreLinq_MoreEnumerable_WindowLeft__1.htm\n",
"[`WindowRight`]: https://morelinq.github.io/4.0/ref/api/html/M_MoreLinq_MoreEnumerable_WindowRight__1.htm\n",
"\n",
"Let's buy when the price is below the 20-day moving average and sell otherwise:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price,Action\r\n",
"10/26/2018,105.690002,Buy\r\n",
"10/29/2018,108.110001,Buy\r\n",
"10/30/2018,103.660004,Buy\r\n",
"10/31/2018,105.440002,Buy\r\n",
"11/1/2018,107.050003,Buy\r\n",
"11/2/2018,106.480003,Buy\r\n",
"11/5/2018,106.370003,Buy\r\n",
"11/6/2018,107.379997,Buy\r\n",
"11/7/2018,109.440002,Sell\r\n",
"11/8/2018,111.800003,Sell\r\n",
"11/9/2018,110.849998,Sell\r\n",
"11/12/2018,109.419998,Sell\r\n",
"11/13/2018,107.550003,Buy\r\n",
"11/14/2018,108.099998,Sell\r\n",
"11/15/2018,104.989998,Buy\r\n",
"11/16/2018,107.080002,Buy\r\n",
"11/19/2018,108.269997,Sell\r\n",
"11/20/2018,101.800003,Buy\r\n",
"11/21/2018,103.599998,Buy\r\n",
"11/23/2018,102.169998,Buy\r\n",
"11/26/2018,104.790001,Buy\r\n",
"11/27/2018,106.269997,Buy\r\n",
"11/28/2018,107.889999,Sell\r\n",
"11/29/2018,110.330002,Sell\r\n",
"11/30/2018,110.699997,Sell\r\n",
"12/3/2018,113.000000,Sell\r\n",
"12/4/2018,111.940002,Sell\r\n",
"12/6/2018,105.820000,Buy\r\n",
"12/7/2018,108.379997,Sell\r\n",
"12/10/2018,104.800003,Buy\r\n",
"12/11/2018,109.800003,Sell\r\n",
"12/12/2018,110.889999,Sell\r\n",
"12/13/2018,109.580002,Sell\r\n",
"12/14/2018,108.250000,Sell\r\n",
"12/17/2018,105.410004,Buy\r\n",
"12/18/2018,103.750000,Buy\r\n",
"12/19/2018,103.650002,Buy\r\n",
"12/20/2018,103.050003,Buy\r\n",
"12/21/2018,101.629997,Buy\r\n",
"12/24/2018,97.680000,Buy\r\n",
"12/26/2018,95.139999,Buy\r\n",
"12/27/2018,99.300003,Buy\r\n",
"12/28/2018,102.089996,Buy\r\n",
"12/31/2018,101.290001,Buy\r\n",
"1/2/2019,99.550003,Buy\r\n",
"1/3/2019,100.099998,Buy\r\n",
"1/4/2019,99.720001,Buy\r\n",
"1/7/2019,101.639999,Buy\r\n",
"1/8/2019,103.040001,Sell\r\n",
"1/9/2019,103.860001,Sell\r\n",
"1/10/2019,103.220001,Sell\r\n",
"1/11/2019,103.190002,Sell\r\n",
"1/14/2019,101.900002,Sell\r\n",
"1/15/2019,102.510002,Sell\r\n",
"1/16/2019,105.260002,Sell\r\n",
"1/17/2019,105.000000,Sell\r\n",
"1/18/2019,107.459999,Sell\r\n",
"1/22/2019,106.750000,Sell\r\n",
"1/23/2019,106.120003,Sell\r\n",
"1/24/2019,106.860001,Sell\r\n",
"1/25/2019,107.239998,Sell\r\n",
"1/28/2019,106.260002,Sell\r\n",
"1/29/2019,104.879997,Sell\r\n",
"1/30/2019,104.620003,Sell\r\n",
"1/31/2019,103.800003,Buy\r\n",
"2/1/2019,103.779999,Buy\r\n",
"2/4/2019,102.870003,Buy\r\n",
"2/5/2019,106.059998,Sell\r\n",
"2/6/2019,107.000000,Sell\r\n",
"2/7/2019,105.190002,Sell\r\n",
"2/8/2019,104.389999,Buy\r\n",
"2/11/2019,106.199997,Sell\r\n",
"2/12/2019,106.139999,Sell\r\n",
"2/13/2019,107.500000,Sell\r\n",
"2/14/2019,106.309998,Sell\r\n",
"2/15/2019,107.910004,Sell\r\n",
"2/19/2019,107.790001,Sell\r\n",
"2/20/2019,107.860001,Sell\r\n",
"2/21/2019,106.900002,Sell\r\n",
"2/22/2019,110.050003,Sell\r\n",
"2/25/2019,111.760002,Sell\r\n",
"2/26/2019,111.260002,Sell\r\n",
"2/27/2019,111.690002,Sell\r\n",
"2/28/2019,112.040001,Sell\r\n",
"3/1/2019,112.889999,Sell\r\n",
"3/4/2019,113.019997,Sell\r\n",
"3/5/2019,112.250000,Sell\r\n",
"3/6/2019,111.870003,Sell\r\n",
"3/7/2019,111.400002,Sell\r\n",
"3/8/2019,109.160004,Buy\r\n",
"3/11/2019,110.989998,Sell\r\n",
"3/12/2019,112.820000,Sell\r\n",
"3/13/2019,114.129997,Sell\r\n",
"3/14/2019,114.540001,Sell\r\n",
"3/15/2019,115.339996,Sell\r\n",
"3/18/2019,116.169998,Sell\r\n",
"3/19/2019,118.089996,Sell\r\n",
"3/20/2019,117.389999,Sell\r\n",
"3/21/2019,117.139999,Sell\r\n",
"3/22/2019,119.500000,Sell\r\n",
"3/25/2019,116.559998,Sell\r\n",
"3/26/2019,118.620003,Sell\r\n",
"3/27/2019,117.879997,Sell\r\n",
"3/28/2019,117.440002,Sell\r\n",
"3/29/2019,118.070000,Sell\r\n",
"4/1/2019,118.949997,Sell\r\n",
"4/2/2019,119.059998,Sell\r\n",
"4/3/2019,119.860001,Sell\r\n",
"4/4/2019,120.099998,Sell\r\n",
"4/5/2019,119.389999,Sell\r\n",
"4/8/2019,119.809998,Sell\r\n",
"4/9/2019,118.629997,Sell\r\n",
"4/10/2019,119.760002,Sell\r\n",
"4/11/2019,120.540001,Sell\r\n",
"4/12/2019,120.639999,Sell\r\n",
"4/15/2019,120.940002,Sell\r\n",
"4/16/2019,121.639999,Sell\r\n",
"4/17/2019,121.239998,Sell\r\n",
"4/18/2019,122.190002,Sell\r\n",
"4/22/2019,122.620003,Sell\r\n",
"4/23/2019,124.099998,Sell\r\n",
"4/24/2019,125.790001,Sell\r\n",
"4/25/2019,130.059998,Sell\r\n",
"4/26/2019,129.699997,Sell\r\n",
"4/29/2019,129.899994,Sell\r\n",
"4/30/2019,129.809998,Sell\r\n",
"5/1/2019,130.529999,Sell\r\n",
"5/2/2019,127.980003,Sell\r\n",
"5/3/2019,127.360001,Sell\r\n",
"5/6/2019,126.389999,Sell\r\n",
"5/7/2019,126.459999,Sell\r\n",
"5/8/2019,125.440002,Sell\r\n",
"5/9/2019,124.290001,Buy\r\n",
"5/10/2019,124.910004,Buy\r\n",
"5/13/2019,124.110001,Buy\r\n",
"5/14/2019,123.870003,Buy\r\n",
"5/15/2019,124.260002,Buy\r\n",
"5/16/2019,126.750000,Sell\r\n",
"5/17/2019,128.309998,Sell\r\n",
"5/20/2019,126.519997,Buy\r\n",
"5/21/2019,127.430000,Sell\r\n",
"5/22/2019,126.620003,Buy\r\n",
"5/23/2019,126.199997,Buy\r\n",
"5/24/2019,126.910004,Sell\r\n",
"5/28/2019,126.980003,Sell\r\n",
"5/29/2019,125.379997,Buy\r\n",
"5/30/2019,125.260002,Buy\r\n",
"5/31/2019,124.230003,Buy\r\n",
"6/3/2019,123.849998,Buy\r\n",
"6/4/2019,121.279999,Buy\r\n",
"6/5/2019,124.949997,Buy\r\n",
"6/6/2019,126.440002,Sell\r\n",
"6/7/2019,129.190002,Sell\r\n",
"6/10/2019,132.399994,Sell\r\n",
"6/11/2019,133.880005,Sell\r\n",
"6/12/2019,131.399994,Sell\r\n",
"6/13/2019,131.979996,Sell\r\n",
"6/14/2019,132.259995,Sell\r\n",
"6/17/2019,132.630005,Sell\r\n",
"6/18/2019,134.190002,Sell\r\n",
"6/19/2019,135.000000,Sell\r\n",
"6/20/2019,137.449997,Sell\r\n",
"6/21/2019,136.580002,Sell\r\n",
"6/24/2019,137.000000,Sell\r\n",
"6/25/2019,137.250000,Sell\r\n",
"6/26/2019,134.350006,Sell\r\n",
"6/27/2019,134.139999,Sell\r\n",
"6/28/2019,134.570007,Sell\r\n",
"7/1/2019,136.630005,Sell\r\n",
"7/2/2019,136.119995,Sell\r\n",
"7/3/2019,136.800003,Sell\r\n",
"7/5/2019,135.940002,Sell\r\n",
"7/8/2019,136.399994,Sell\r\n",
"7/9/2019,136.000000,Sell\r\n",
"7/10/2019,137.130005,Sell\r\n",
"7/11/2019,138.199997,Sell\r\n",
"7/12/2019,138.850006,Sell\r\n",
"7/15/2019,139.440002,Sell\r\n",
"7/16/2019,138.960007,Sell\r\n",
"7/17/2019,137.699997,Sell\r\n",
"7/18/2019,135.550003,Buy\r\n",
"7/19/2019,140.220001,Sell\r\n",
"7/22/2019,137.410004,Sell\r\n",
"7/23/2019,139.759995,Sell\r\n",
"7/24/2019,138.899994,Sell\r\n",
"7/25/2019,140.429993,Sell\r\n",
"7/26/2019,140.369995,Sell\r\n",
"7/29/2019,141.500000,Sell\r\n",
"7/30/2019,140.139999,Sell\r\n",
"7/31/2019,140.330002,Sell\r\n",
"8/1/2019,137.000000,Buy\r\n",
"8/2/2019,138.089996,Buy\r\n",
"8/5/2019,133.300003,Buy\r\n",
"8/6/2019,133.800003,Buy\r\n",
"8/7/2019,133.789993,Buy\r\n",
"8/8/2019,136.600006,Buy\r\n",
"8/9/2019,138.610001,Sell\r\n",
"8/12/2019,137.070007,Buy\r\n",
"8/13/2019,136.050003,Buy\r\n",
"8/14/2019,136.360001,Buy\r\n",
"8/15/2019,134.389999,Buy\r\n",
"8/16/2019,134.880005,Buy\r\n",
"8/19/2019,137.850006,Sell\r\n",
"8/20/2019,138.210007,Sell\r\n",
"8/21/2019,138.550003,Sell\r\n",
"8/22/2019,138.660004,Sell\r\n",
"8/23/2019,137.190002,Sell\r\n",
"8/26/2019,134.990005,Buy\r\n",
"8/27/2019,136.389999,Buy\r\n",
"8/28/2019,134.880005,Buy\r\n",
"8/29/2019,137.250000,Sell\r\n",
"8/30/2019,139.149994,Sell\r\n",
"9/3/2019,136.610001,Sell\r\n",
"9/4/2019,137.300003,Sell\r\n",
"9/5/2019,139.110001,Sell\r\n",
"9/6/2019,140.029999,Sell\r\n",
"9/9/2019,139.589996,Sell\r\n",
"9/10/2019,136.800003,Buy\r\n",
"9/11/2019,135.910004,Buy\r\n",
"9/12/2019,137.850006,Sell\r\n",
"9/13/2019,137.779999,Sell\r\n",
"9/16/2019,135.830002,Buy\r\n",
"9/17/2019,136.960007,Buy\r\n",
"9/18/2019,137.360001,Buy\r\n",
"9/19/2019,140.300003,Sell\r\n",
"9/20/2019,141.009995,Sell\r\n",
"9/23/2019,139.229996,Sell\r\n",
"9/24/2019,140.360001,Sell\r\n",
"9/25/2019,137.500000,Buy\r\n",
"9/26/2019,139.440002,Sell\r\n",
"9/27/2019,140.149994,Sell\r\n",
"9/30/2019,138.050003,Buy\r\n",
"10/1/2019,139.660004,Sell\r\n",
"10/2/2019,136.250000,Buy\r\n",
"10/3/2019,134.949997,Buy\r\n",
"10/4/2019,136.750000,Buy\r\n",
"10/7/2019,137.139999,Buy\r\n",
"10/8/2019,137.080002,Buy\r\n",
"10/9/2019,137.460007,Buy\r\n",
"10/10/2019,138.490005,Sell\r\n",
"10/11/2019,140.119995,Sell\r\n",
"10/14/2019,139.690002,Sell\r\n",
"10/15/2019,140.059998,Sell\r\n",
"10/16/2019,140.789993,Sell\r\n",
"10/17/2019,140.949997,Sell\r\n",
"10/18/2019,139.759995,Sell\r\n",
"10/21/2019,138.449997,Buy\r\n",
"10/22/2019,138.970001,Sell\r\n",
"10/23/2019,136.880005,Buy\r\n",
"10/24/2019,139.389999,Sell\r\n",
"10/25/2019,139.339996,Sell\r\n",
"10/28/2019,144.399994,Sell\r\n",
"10/29/2019,144.080002,Sell\r\n",
"10/30/2019,143.520004,Sell\r\n",
"10/31/2019,144.899994,Sell\r\n",
"11/1/2019,144.259995,Sell\r\n",
"11/4/2019,144.830002,Sell\r\n",
"11/5/2019,144.970001,Sell\r\n",
"11/6/2019,144.369995,Sell\r\n",
"11/7/2019,143.839996,Sell\r\n",
"11/8/2019,143.979996,Sell\r\n",
"11/11/2019,145.339996,Sell\r\n",
"11/12/2019,146.279999,Sell\r\n",
"11/13/2019,146.740005,Sell\r\n",
"11/14/2019,147.020004,Sell\r\n",
"11/15/2019,148.929993,Sell\r\n",
"11/18/2019,150.070007,Sell\r\n",
"11/19/2019,150.880005,Sell\r\n",
"11/20/2019,150.309998,Sell\r\n",
"11/21/2019,149.399994,Sell\r\n",
"11/22/2019,150.070007,Sell\r\n",
"11/25/2019,150.000000,Sell\r\n",
"11/26/2019,151.360001,Sell\r\n",
"11/27/2019,152.330002,Sell\r\n",
"11/29/2019,152.100006,Sell\r\n",
"12/2/2019,151.809998,Sell\r\n",
"12/3/2019,147.490005,Buy\r\n",
"12/4/2019,150.139999,Sell\r\n",
"12/5/2019,150.050003,Sell\r\n",
"12/6/2019,150.990005,Sell\r\n",
"12/9/2019,151.070007,Sell\r\n",
"12/10/2019,151.289993,Sell\r\n",
"12/11/2019,151.539993,Sell\r\n",
"12/12/2019,151.649994,Sell\r\n",
"12/13/2019,153.000000,Sell\r\n",
"12/16/2019,155.110001,Sell\r\n",
"12/17/2019,155.449997,Sell\r\n",
"12/18/2019,154.300003,Sell\r\n",
"12/19/2019,154.000000,Sell\r\n",
"12/20/2019,157.350006,Sell\r\n",
"12/23/2019,158.119995,Sell\r\n",
"12/24/2019,157.479996,Sell\r\n",
"12/26/2019,157.559998,Sell\r\n",
"12/27/2019,159.449997,Sell\r\n",
"12/30/2019,158.990005,Sell\r\n",
"12/31/2019,156.770004,Sell\r\n",
"1/2/2020,158.779999,Sell\r\n",
"1/3/2020,158.320007,Sell\r\n",
"1/6/2020,157.080002,Sell\r\n",
"1/7/2020,159.320007,Sell\r\n",
"1/8/2020,158.929993,Sell\r\n",
"1/9/2020,161.839996,Sell\r\n",
"1/10/2020,162.820007,Sell\r\n",
"1/13/2020,161.759995,Sell\r\n",
"1/14/2020,163.389999,Sell\r\n",
"1/15/2020,162.619995,Sell\r\n",
"1/16/2020,164.350006,Sell\r\n",
"1/17/2020,167.419998,Sell\r\n",
"1/21/2020,166.679993,Sell\r\n",
"1/22/2020,167.399994,Sell\r\n",
"1/23/2020,166.190002,Sell\r\n",
"1/24/2020,167.509995,Sell\r\n",
"1/27/2020,161.149994,Buy\r\n",
"1/28/2020,163.779999,Sell\r\n",
"1/29/2020,167.839996,Sell\r\n",
"1/30/2020,174.050003,Sell\r\n",
"1/31/2020,172.210007,Sell\r\n",
"2/3/2020,170.429993,Sell\r\n",
"2/4/2020,177.139999,Sell\r\n",
"2/5/2020,184.029999,Sell\r\n",
"2/6/2020,180.970001,Sell\r\n",
"2/7/2020,182.850006,Sell\r\n",
"2/10/2020,183.580002,Sell\r\n",
"2/11/2020,190.649994,Sell\r\n",
"2/12/2020,185.580002,Sell\r\n",
"2/13/2020,183.080002,Sell\r\n",
"2/14/2020,183.250000,Sell\r\n",
"2/18/2020,185.610001,Sell\r\n",
"2/19/2020,188.059998,Sell\r\n",
"2/20/2020,186.949997,Sell\r\n",
"2/21/2020,183.169998,Sell\r\n",
"2/24/2020,167.770004,Buy\r\n",
"2/25/2020,174.199997,Buy\r\n",
"2/26/2020,169.710007,Buy\r\n",
"2/27/2020,163.320007,Buy\r\n",
"2/28/2020,152.410004,Buy\r\n",
"3/2/2020,165.309998,Buy\r\n",
"3/3/2020,173.800003,Buy\r\n",
"3/4/2020,168.490005,Buy\r\n",
"3/5/2020,166.050003,Buy\r\n",
"3/6/2020,162.610001,Buy\r\n",
"3/9/2020,151.000000,Buy\r\n",
"3/10/2020,158.160004,Buy\r\n",
"3/11/2020,157.130005,Buy\r\n",
"3/12/2020,145.300003,Buy\r\n",
"3/13/2020,147.500000,Buy\r\n",
"3/16/2020,140.000000,Buy\r\n",
"3/17/2020,140.000000,Buy\r\n",
"3/18/2020,138.000000,Buy\r\n",
"3/19/2020,142.770004,Buy\r\n",
"3/20/2020,146.000000,Buy\r\n",
"3/23/2020,137.009995,Buy\r\n",
"3/24/2020,143.750000,Buy\r\n",
"3/25/2020,148.910004,Buy\r\n",
"3/26/2020,148.399994,Buy\r\n",
"3/27/2020,151.750000,Sell\r\n",
"3/30/2020,152.440002,Sell\r\n",
"3/31/2020,159.399994,Sell\r\n",
"4/1/2020,153.000000,Sell\r\n",
"4/2/2020,151.860001,Sell\r\n",
"4/3/2020,155.100006,Sell\r\n",
"4/6/2020,160.320007,Sell\r\n",
"4/7/2020,169.589996,Sell\r\n",
"4/8/2020,165.669998,Sell\r\n",
"4/9/2020,166.360001,Sell\r\n",
"4/13/2020,164.350006,Sell\r\n",
"4/14/2020,169.000000,Sell\r\n",
"4/15/2020,171.199997,Sell\r\n",
"4/16/2020,174.300003,Sell\r\n",
"4/17/2020,179.500000,Sell\r\n",
"4/20/2020,176.630005,Sell\r\n",
"4/21/2020,173.500000,Sell\r\n",
"4/22/2020,171.389999,Sell\r\n",
"4/23/2020,174.110001,Sell\r\n",
"4/24/2020,172.059998,Sell\r\n",
"4/27/2020,176.589996,Sell\r\n",
"4/28/2020,175.589996,Sell\r\n",
"4/29/2020,173.220001,Sell\r\n",
"4/30/2020,180.000000,Sell\r\n",
"5/1/2020,175.800003,Sell\r\n",
"5/4/2020,174.490005,Sell\r\n",
"5/5/2020,180.619995,Sell\r\n",
"5/6/2020,182.080002,Sell\r\n",
"5/7/2020,184.169998,Sell\r\n",
"5/8/2020,184.979996,Sell\r\n",
"5/11/2020,183.149994,Sell\r\n",
"5/12/2020,186.800003,Sell\r\n",
"5/13/2020,182.550003,Sell\r\n",
"5/14/2020,177.539993,Buy\r\n",
"5/15/2020,179.059998,Sell\r\n",
"5/18/2020,185.750000,Sell\r\n",
"5/19/2020,185.029999,Sell\r\n",
"5/20/2020,184.809998,Sell\r\n",
"5/21/2020,185.399994,Sell\r\n",
"5/22/2020,183.190002,Sell\r\n",
"5/26/2020,186.339996,Sell\r\n",
"5/27/2020,180.199997,Buy\r\n",
"5/28/2020,180.740005,Buy\r\n",
"5/29/2020,182.729996,Sell\r\n",
"6/1/2020,182.539993,Buy\r\n",
"6/2/2020,184.250000,Sell\r\n",
"6/3/2020,184.820007,Sell\r\n",
"6/4/2020,184.300003,Sell\r\n",
"6/5/2020,182.619995,Buy\r\n",
"6/8/2020,185.940002,Sell\r\n",
"6/9/2020,188.000000,Sell\r\n",
"6/10/2020,191.130005,Sell\r\n",
"6/11/2020,193.130005,Sell\r\n",
"6/12/2020,190.539993,Sell\r\n",
"6/15/2020,184.580002,Buy\r\n",
"6/16/2020,192.889999,Sell\r\n",
"6/17/2020,195.029999,Sell\r\n",
"6/18/2020,194.000000,Sell\r\n",
"6/19/2020,198.589996,Sell\r\n",
"6/22/2020,195.789993,Sell\r\n",
"6/23/2020,202.089996,Sell\r\n",
"6/24/2020,201.600006,Sell\r\n",
"6/25/2020,197.800003,Sell\r\n",
"6/26/2020,199.729996,Sell\r\n",
"6/29/2020,195.779999,Sell\r\n",
"6/30/2020,197.880005,Sell\r\n",
"7/1/2020,203.139999,Sell\r\n",
"7/2/2020,205.679993,Sell\r\n",
"7/6/2020,208.830002,Sell\r\n",
"7/7/2020,210.449997,Sell\r\n",
"7/8/2020,210.070007,Sell\r\n",
"7/9/2020,216.330002,Sell\r\n",
"7/10/2020,213.619995,Sell\r\n",
"7/13/2020,214.479996,Sell\r\n",
"7/14/2020,206.130005,Sell\r\n",
"7/15/2020,209.559998,Sell\r\n",
"7/16/2020,205.399994,Sell\r\n",
"7/17/2020,204.470001,Buy\r\n",
"7/20/2020,205.000000,Buy\r\n",
"7/21/2020,213.660004,Sell\r\n",
"7/22/2020,209.199997,Sell\r\n",
"7/23/2020,207.190002,Sell\r\n",
"7/24/2020,200.419998,Buy\r\n",
"7/27/2020,201.470001,Buy\r\n",
"7/28/2020,203.610001,Buy\r\n",
"7/29/2020,202.500000,Buy\r\n",
"7/30/2020,201.000000,Buy\r\n",
"7/31/2020,204.399994,Buy\r\n",
"8/3/2020,211.520004,Sell\r\n",
"8/4/2020,214.169998,Sell\r\n",
"8/5/2020,214.899994,Sell\r\n",
"8/6/2020,212.339996,Sell\r\n",
"8/7/2020,214.850006,Sell\r\n",
"8/10/2020,211.669998,Sell\r\n",
"8/11/2020,207.160004,Buy\r\n",
"8/12/2020,205.289993,Buy\r\n",
"8/13/2020,209.440002,Sell\r\n",
"8/14/2020,208.759995,Sell\r\n",
"8/17/2020,209.600006,Sell\r\n",
"8/18/2020,210.529999,Sell\r\n",
"8/19/2020,211.490005,Sell\r\n",
"8/20/2020,209.539993,Sell\r\n",
"8/21/2020,213.860001,Sell\r\n",
"8/24/2020,214.789993,Sell\r\n",
"8/25/2020,213.100006,Sell\r\n",
"8/26/2020,217.880005,Sell\r\n",
"8/27/2020,222.889999,Sell\r\n",
"8/28/2020,228.179993,Sell\r\n",
"8/31/2020,227.000000,Sell\r\n",
"9/1/2020,225.509995,Sell\r\n",
"9/2/2020,227.970001,Sell\r\n",
"9/3/2020,229.270004,Sell\r\n",
"9/4/2020,215.100006,Buy\r\n",
"9/8/2020,206.500000,Buy\r\n",
"9/9/2020,207.600006,Buy\r\n",
"9/10/2020,213.399994,Buy\r\n",
"9/11/2020,207.199997,Buy\r\n",
"9/14/2020,204.240005,Buy\r\n",
"9/15/2020,208.419998,Buy\r\n",
"9/16/2020,210.619995,Buy\r\n",
"9/17/2020,200.050003,Buy\r\n",
"9/18/2020,202.800003,Buy\r\n",
"9/21/2020,197.190002,Buy\r\n",
"9/22/2020,205.059998,Buy\r\n",
"9/23/2020,207.899994,Buy\r\n",
"9/24/2020,199.850006,Buy\r\n",
"9/25/2020,203.550003,Buy\r\n",
"9/28/2020,210.880005,Sell\r\n",
"9/29/2020,209.350006,Buy\r\n",
"9/30/2020,207.729996,Buy\r\n",
"10/1/2020,213.490005,Sell\r\n",
"10/2/2020,208.000000,Sell\r\n",
"10/5/2020,207.220001,Sell\r\n",
"10/6/2020,208.820007,Sell\r\n",
"10/7/2020,207.059998,Sell\r\n",
"10/8/2020,210.509995,Sell\r\n",
"10/9/2020,211.229996,Sell\r\n",
"10/12/2020,218.789993,Sell\r\n",
"10/13/2020,222.720001,Sell\r\n",
"10/14/2020,223.000000,Sell\r\n",
"10/15/2020,217.100006,Sell\r\n",
"10/16/2020,220.149994,Sell\r\n",
"10/19/2020,220.419998,Sell\r\n",
"10/20/2020,215.800003,Sell\r\n",
"10/21/2020,213.119995,Sell\r\n",
"10/22/2020,213.929993,Sell\r\n",
"10/23/2020,215.029999,Sell\r\n",
"10/26/2020,213.850006,Buy\r\n",
"10/27/2020,211.589996,Buy\r\n",
"10/28/2020,207.669998,Buy\r\n",
"10/29/2020,204.070007,Buy\r\n",
"10/30/2020,203.500000,Buy\r\n",
"11/2/2020,204.289993,Buy\r\n",
"11/3/2020,203.889999,Buy\r\n",
"11/4/2020,214.020004,Sell\r\n",
"11/5/2020,222.039993,Sell\r\n",
"11/6/2020,222.259995,Sell\r\n",
"11/9/2020,224.440002,Sell\r\n",
"11/10/2020,214.500000,Sell\r\n",
"11/11/2020,212.389999,Buy\r\n",
"11/12/2020,217.210007,Sell\r\n",
"11/13/2020,216.360001,Sell\r\n",
"11/16/2020,214.869995,Sell\r\n",
"11/17/2020,216.100006,Sell\r\n",
"11/18/2020,213.649994,Sell\r\n",
"11/19/2020,211.380005,Buy\r\n",
"11/20/2020,212.199997,Buy\r\n",
"11/23/2020,210.949997,Buy\r\n",
"11/24/2020,209.589996,Buy\r\n",
"11/25/2020,215.110001,Sell\r\n",
"11/27/2020,214.850006,Sell\r\n",
"11/30/2020,214.100006,Buy\r\n",
"12/1/2020,214.509995,Buy\r\n",
"12/2/2020,214.880005,Buy\r\n",
"12/3/2020,214.610001,Buy\r\n",
"12/4/2020,214.220001,Buy\r\n",
"12/7/2020,214.369995,Buy\r\n",
"12/8/2020,213.970001,Buy\r\n",
"12/9/2020,215.160004,Sell\r\n",
"12/10/2020,211.770004,Buy\r\n",
"12/11/2020,210.050003,Buy\r\n",
"12/14/2020,213.100006,Buy\r\n",
"12/15/2020,215.169998,Sell\r\n",
"12/16/2020,214.750000,Sell\r\n",
"12/17/2020,219.869995,Sell\r\n",
"12/18/2020,218.589996,Sell\r\n",
"12/21/2020,217.550003,Sell\r\n",
"12/22/2020,222.690002,Sell\r\n",
"12/23/2020,223.110001,Sell\r\n",
"12/24/2020,221.419998,Sell\r\n",
"12/28/2020,224.449997,Sell\r\n",
"12/29/2020,226.309998,Sell\r\n",
"12/30/2020,225.229996,Sell\r\n",
"12/31/2020,221.699997,Sell\r\n",
"1/4/2021,222.529999,Sell\r\n",
"1/5/2021,217.259995,Buy\r\n",
"1/6/2021,212.169998,Buy\r\n",
"1/7/2021,214.039993,Buy\r\n",
"1/8/2021,218.679993,Sell\r\n",
"1/11/2021,218.470001,Buy\r\n",
"1/12/2021,216.500000,Buy\r\n",
"1/13/2021,214.020004,Buy\r\n",
"1/14/2021,215.910004,Buy\r\n",
"1/15/2021,213.520004,Buy\r\n",
"1/19/2021,213.750000,Buy\r\n",
"1/20/2021,217.699997,Buy\r\n",
"1/21/2021,224.699997,Sell\r\n",
"1/22/2021,227.080002,Sell\r\n",
"1/25/2021,229.119995,Sell\r\n",
"1/26/2021,231.860001,Sell\r\n",
"1/27/2021,238.000000,Sell\r\n",
"1/28/2021,235.610001,Sell\r\n",
"1/29/2021,235.990005,Sell\r\n",
"2/1/2021,235.059998,Sell\r\n",
"2/2/2021,241.300003,Sell\r\n",
"2/3/2021,239.570007,Sell\r\n",
"2/4/2021,242.660004,Sell\r\n",
"2/5/2021,242.229996,Sell\r\n",
"2/8/2021,243.149994,Sell\r\n",
"2/9/2021,241.869995,Sell\r\n",
"2/10/2021,245.000000,Sell\r\n",
"2/11/2021,244.779999,Sell\r\n",
"2/12/2021,243.929993,Sell\r\n",
"2/16/2021,245.029999,Sell\r\n",
"2/17/2021,241.320007,Sell\r\n",
"2/18/2021,241.800003,Sell\r\n",
"2/19/2021,243.750000,Sell\r\n",
"2/22/2021,237.419998,Buy\r\n",
"2/23/2021,230.330002,Buy\r\n",
"2/24/2021,230.009995,Buy\r\n",
"2/25/2021,232.080002,Buy\r\n",
"2/26/2021,231.529999,Buy\r\n",
"3/1/2021,235.899994,Buy\r\n",
"3/2/2021,237.009995,Buy\r\n",
"3/3/2021,232.160004,Buy\r\n",
"3/4/2021,226.740005,Buy\r\n",
"3/5/2021,229.520004,Buy\r\n",
"3/8/2021,231.369995,Buy\r\n",
"3/9/2021,232.880005,Buy\r\n",
"3/10/2021,237.000000,Sell\r\n",
"3/11/2021,234.960007,Buy\r\n",
"3/12/2021,234.009995,Buy\r\n",
"3/15/2021,234.960007,Buy\r\n",
"3/16/2021,236.279999,Sell\r\n",
"3/17/2021,236.149994,Sell\r\n",
"3/18/2021,232.559998,Buy\r\n",
"3/19/2021,231.020004,Buy\r\n",
"3/22/2021,230.270004,Buy\r\n",
"3/23/2021,237.490005,Sell\r\n",
"3/24/2021,237.850006,Sell\r\n",
"3/25/2021,235.300003,Sell\r\n",
"3/26/2021,231.550003,Buy\r\n",
"3/29/2021,236.589996,Sell\r\n",
"3/30/2021,233.529999,Buy\r\n",
"3/31/2021,232.910004,Buy\r\n",
"4/1/2021,238.470001,Sell\r\n",
"4/5/2021,242.759995,Sell\r\n",
"4/6/2021,247.610001,Sell\r\n",
"4/7/2021,247.809998,Sell\r\n",
"4/8/2021,252.770004,Sell\r\n",
"4/9/2021,252.869995,Sell\r\n",
"4/12/2021,254.710007,Sell\r\n",
"4/13/2021,257.260010,Sell\r\n",
"4/14/2021,257.480011,Sell\r\n",
"4/15/2021,257.929993,Sell\r\n",
"4/16/2021,259.470001,Sell\r\n",
"4/19/2021,260.190002,Sell\r\n",
"4/20/2021,257.820007,Sell\r\n",
"4/21/2021,258.940002,Sell\r\n",
"4/22/2021,260.209991,Sell\r\n",
"4/23/2021,257.880005,Sell\r\n",
"4/26/2021,261.660004,Sell\r\n",
"4/27/2021,261.579987,Sell\r\n",
"4/28/2021,256.079987,Sell\r\n",
"4/29/2021,255.460007,Sell\r\n",
"4/30/2021,249.740005,Buy\r\n",
"5/3/2021,253.399994,Buy\r\n",
"5/4/2021,250.970001,Buy\r\n",
"5/5/2021,249.059998,Buy\r\n",
"5/6/2021,246.449997,Buy\r\n",
"5/7/2021,252.149994,Buy\r\n",
"5/10/2021,250.869995,Buy\r\n",
"5/11/2021,244.550003,Buy\r\n",
"5/12/2021,242.169998,Buy\r\n",
"5/13/2021,241.800003,Buy\r\n",
"5/14/2021,245.580002,Buy\r\n",
"5/17/2021,246.550003,Buy\r\n",
"5/18/2021,246.270004,Buy\r\n",
"5/19/2021,239.309998,Buy\r\n",
"5/20/2021,243.960007,Buy\r\n",
"5/21/2021,247.570007,Buy\r\n",
"5/24/2021,247.789993,Buy\r\n",
"5/25/2021,251.770004,Sell\r\n",
"5/26/2021,251.429993,Sell\r\n",
"5/27/2021,251.169998,Sell\r\n",
"5/28/2021,251.000000,Sell\r\n",
"6/1/2021,251.229996,Sell\r\n",
"6/2/2021,248.130005,Sell\r\n",
"6/3/2021,245.220001,Buy\r\n",
"6/4/2021,247.759995,Sell\r\n",
"6/7/2021,249.979996,Sell\r\n",
"6/8/2021,255.160004,Sell\r\n",
"6/9/2021,253.809998,Sell\r\n",
"6/10/2021,254.289993,Sell\r\n",
"6/11/2021,257.989990,Sell\r\n",
"6/14/2021,257.899994,Sell\r\n",
"6/15/2021,259.769989,Sell\r\n",
"6/16/2021,259.399994,Sell\r\n",
"6/17/2021,256.070007,Sell\r\n",
"6/18/2021,259.630005,Sell\r\n",
"6/21/2021,259.820007,Sell\r\n",
"6/22/2021,262.720001,Sell\r\n",
"6/23/2021,265.989990,Sell\r\n",
"6/24/2021,266.160004,Sell\r\n",
"6/25/2021,266.230011,Sell\r\n",
"6/28/2021,266.190002,Sell\r\n",
"6/29/2021,268.869995,Sell\r\n",
"6/30/2021,270.690002,Sell\r\n",
"7/1/2021,269.609985,Sell\r\n",
"7/2/2021,272.820007,Sell\r\n",
"7/6/2021,278.029999,Sell\r\n",
"7/7/2021,279.399994,Sell\r\n",
"7/8/2021,276.899994,Sell\r\n",
"7/9/2021,275.720001,Sell\r\n",
"7/12/2021,279.160004,Sell\r\n",
"7/13/2021,277.519989,Sell\r\n",
"7/14/2021,282.350006,Sell\r\n",
"7/15/2021,282.000000,Sell\r\n",
"7/16/2021,282.070007,Sell\r\n",
"7/19/2021,278.929993,Sell\r\n",
"7/20/2021,278.029999,Sell\r\n",
"7/21/2021,278.899994,Sell\r\n",
"7/22/2021,283.839996,Sell\r\n",
"7/23/2021,287.369995,Sell\r\n",
"7/26/2021,289.000000,Sell\r\n",
"7/27/2021,289.429993,Sell\r\n",
"7/28/2021,288.989990,Sell\r\n",
"7/29/2021,286.239990,Sell\r\n",
"7/30/2021,285.170013,Sell\r\n",
"8/2/2021,286.359985,Sell\r\n",
"8/3/2021,285.420013,Sell\r\n",
"8/4/2021,286.220001,Sell\r\n",
"8/5/2021,286.880005,Sell\r\n",
"8/6/2021,288.510010,Sell\r\n",
"8/9/2021,289.750000,Sell\r\n",
"8/10/2021,288.799988,Sell\r\n",
"8/11/2021,287.209991,Sell\r\n",
"8/12/2021,286.630005,Sell\r\n",
"8/13/2021,289.480011,Sell\r\n",
"8/16/2021,293.190002,Sell\r\n",
"8/17/2021,292.390015,Sell\r\n",
"8/18/2021,292.040009,Sell\r\n",
"8/19/2021,288.690002,Sell\r\n",
"8/20/2021,299.720001,Sell\r\n",
"8/23/2021,303.250000,Sell\r\n",
"8/24/2021,305.019989,Sell\r\n",
"8/25/2021,304.299988,Sell\r\n",
"8/26/2021,300.989990,Sell\r\n",
"8/27/2021,298.989990,Sell\r\n",
"8/30/2021,301.119995,Sell\r\n",
"8/31/2021,304.420013,Sell\r\n",
"9/1/2021,302.869995,Sell\r\n",
"9/2/2021,302.200012,Sell\r\n",
"9/3/2021,300.989990,Sell\r\n",
"9/7/2021,301.010010,Sell\r\n",
"9/8/2021,299.779999,Sell\r\n",
"9/9/2021,300.820007,Sell\r\n",
"9/10/2021,298.420013,Buy\r\n",
"9/13/2021,297.549988,Buy\r\n",
"9/14/2021,299.559998,Buy\r\n",
"9/15/2021,303.260010,Sell\r\n",
"9/16/2021,303.760010,Sell\r\n",
"9/17/2021,304.170013,Sell\r\n",
"9/20/2021,296.329987,Buy\r\n",
"9/21/2021,295.690002,Buy\r\n",
"9/22/2021,296.730011,Buy\r\n",
"9/23/2021,298.850006,Buy\r\n",
"9/24/2021,298.230011,Buy\r\n",
"9/27/2021,296.140015,Buy\r\n",
"9/28/2021,289.799988,Buy\r\n",
"9/29/2021,285.100006,Buy\r\n",
"9/30/2021,285.709991,Buy\r\n",
"10/1/2021,282.119995,Buy\r\n",
"10/4/2021,287.399994,Buy\r\n",
"10/5/2021,284.049988,Buy\r\n",
"10/6/2021,285.779999,Buy\r\n",
"10/7/2021,295.179993,Sell\r\n",
"10/8/2021,296.220001,Sell\r\n",
"10/11/2021,292.920013,Buy\r\n",
"10/12/2021,295.339996,Sell\r\n",
"10/13/2021,294.910004,Sell\r\n",
"10/14/2021,299.209991,Sell\r\n",
"10/15/2021,302.339996,Sell\r\n",
"10/18/2021,303.570007,Sell\r\n",
"10/19/2021,308.350006,Sell\r\n",
"10/20/2021,309.209991,Sell\r\n",
"10/21/2021,307.170013,Sell\r\n",
"10/22/2021,310.399994,Sell\r\n",
"10/25/2021,309.359985,Sell\r\n",
"10/26/2021,311.000000,Sell\r\n",
"10/27/2021,316.000000,Sell\r\n",
"10/28/2021,324.329987,Sell\r\n",
"10/29/2021,324.130005,Sell\r\n",
"11/1/2021,331.359985,Sell\r\n",
"11/2/2021,330.309998,Sell\r\n",
"11/3/2021,333.899994,Sell\r\n",
"11/4/2021,332.890015,Sell\r\n",
"11/5/2021,338.510010,Sell\r\n",
"11/8/2021,337.299988,Sell\r\n",
"11/9/2021,337.109985,Sell\r\n",
"11/10/2021,334.570007,Sell\r\n",
"11/11/2021,331.250000,Sell\r\n",
"11/12/2021,333.920013,Sell\r\n",
"11/15/2021,337.540009,Sell\r\n",
"11/16/2021,335.679993,Sell\r\n",
"11/17/2021,338.940002,Sell\r\n",
"11/18/2021,338.179993,Sell\r\n",
"11/19/2021,342.640015,Sell\r\n",
"11/22/2021,344.619995,Sell\r\n",
"11/23/2021,337.049988,Sell\r\n",
"11/24/2021,336.279999,Sell\r\n",
"11/26/2021,334.350006,Buy\r\n",
"11/29/2021,334.940002,Buy\r\n",
"11/30/2021,335.320007,Buy\r\n",
"12/1/2021,335.130005,Buy\r\n",
"12/2/2021,330.299988,Buy\r\n",
"12/3/2021,331.989990,Buy\r\n",
"12/6/2021,323.950012,Buy\r\n",
"12/7/2021,331.640015,Buy\r\n",
"12/8/2021,335.309998,Sell\r\n",
"12/9/2021,334.410004,Buy\r\n",
"12/10/2021,334.980011,Buy\r\n",
"12/13/2021,340.679993,Sell\r\n",
"12/14/2021,333.220001,Buy\r\n",
"12/15/2021,328.609985,Buy\r\n",
"12/16/2021,335.709991,Sell\r\n",
"12/17/2021,320.880005,Buy\r\n",
"12/20/2021,320.049988,Buy\r\n",
"12/21/2021,323.290009,Buy\r\n",
"12/22/2021,328.299988,Buy\r\n",
"12/23/2021,332.750000,Sell\r\n",
"12/27/2021,335.459991,Sell\r\n",
"12/28/2021,343.149994,Sell\r\n",
"12/29/2021,341.299988,Sell\r\n",
"12/30/2021,341.910004,Sell\r\n",
"12/31/2021,338.510010,Sell\r\n",
"1/3/2022,335.350006,Sell\r\n",
"1/4/2022,334.829987,Sell\r\n",
"1/5/2022,325.859985,Buy\r\n",
"1/6/2022,313.149994,Buy\r\n",
"1/7/2022,314.149994,Buy\r\n",
"1/10/2022,309.489990,Buy\r\n",
"1/11/2022,313.380005,Buy\r\n",
"1/12/2022,319.670013,Buy\r\n",
"1/13/2022,320.470001,Buy\r\n",
"1/14/2022,304.250000,Buy\r\n",
"1/18/2022,304.070007,Buy\r\n",
"1/19/2022,306.290009,Buy\r\n",
"1/20/2022,309.070007,Buy\r\n",
"1/21/2022,302.690002,Buy\r\n",
"1/24/2022,292.200012,Buy\r\n",
"1/25/2022,291.519989,Buy\r\n",
"1/26/2022,307.989990,Buy\r\n",
"1/27/2022,302.660004,Buy\r\n",
"1/28/2022,300.230011,Buy\r\n",
"1/31/2022,308.950012,Buy\r\n",
"2/1/2022,310.410004,Sell\r\n",
"2/2/2022,309.630005,Sell\r\n",
"2/3/2022,309.489990,Sell\r\n",
"2/4/2022,300.209991,Buy\r\n",
"2/7/2022,306.170013,Buy\r\n",
"2/8/2022,301.250000,Buy\r\n",
"2/9/2022,309.869995,Sell\r\n",
"2/10/2022,304.040009,Buy\r\n",
"2/11/2022,303.190002,Buy\r\n",
"2/14/2022,293.769989,Buy\r\n",
"2/15/2022,300.010010,Buy\r\n",
"2/16/2022,298.369995,Buy\r\n",
"2/17/2022,296.359985,Buy\r\n",
"2/18/2022,293.049988,Buy\r\n",
"2/22/2022,285.000000,Buy\r\n",
"2/23/2022,290.179993,Buy\r\n",
"2/24/2022,272.510010,Buy\r\n",
"2/25/2022,295.140015,Buy\r\n",
"2/28/2022,294.309998,Buy\r\n",
"3/1/2022,296.399994,Buy\r\n",
"3/2/2022,295.359985,Buy\r\n",
"3/3/2022,302.890015,Sell\r\n",
"3/4/2022,294.290009,Buy\r\n",
"3/7/2022,288.529999,Buy\r\n",
"3/8/2022,277.799988,Buy\r\n",
"3/9/2022,283.440002,Buy\r\n",
"3/10/2022,283.019989,Buy\r\n",
"3/11/2022,287.959991,Buy\r\n",
"3/14/2022,280.339996,Buy\r\n",
"3/15/2022,280.350006,Buy\r\n",
"3/16/2022,289.109985,Buy\r\n",
"3/17/2022,293.290009,Sell\r\n",
"3/18/2022,295.369995,Sell\r\n",
"3/21/2022,298.890015,Sell\r\n",
"3/22/2022,299.799988,Sell\r\n",
"3/23/2022,300.510010,Sell\r\n",
"3/24/2022,299.140015,Sell\r\n",
"3/25/2022,305.230011,Sell\r\n",
"3/28/2022,304.329987,Sell\r\n",
"3/29/2022,313.910004,Sell\r\n",
"3/30/2022,313.760010,Sell\r\n",
"3/31/2022,313.899994,Sell\r\n",
"4/1/2022,309.369995,Sell\r\n",
"4/4/2022,310.089996,Sell\r\n",
"4/5/2022,313.269989,Sell\r\n",
"4/6/2022,305.190002,Sell\r\n",
"4/7/2022,296.660004,Buy\r\n",
"4/8/2022,300.440002,Buy\r\n",
"4/11/2022,291.790009,Buy\r\n",
"4/12/2022,289.239990,Buy\r\n",
"4/13/2022,282.730011,Buy\r\n",
"4/14/2022,288.089996,Buy\r\n",
"4/18/2022,278.910004,Buy\r\n",
"4/19/2022,279.380005,Buy\r\n",
"4/20/2022,289.399994,Buy\r\n",
"4/21/2022,288.579987,Buy\r\n",
"4/22/2022,281.679993,Buy\r\n",
"4/25/2022,273.290009,Buy\r\n",
"4/26/2022,277.500000,Buy\r\n",
"4/27/2022,282.100006,Buy\r\n",
"4/28/2022,285.190002,Buy\r\n",
"4/29/2022,288.609985,Buy\r\n",
"5/2/2022,277.709991,Buy\r\n",
"5/3/2022,283.959991,Buy\r\n",
"5/4/2022,282.589996,Buy\r\n",
"5/5/2022,285.540009,Sell\r\n",
"5/6/2022,274.809998,Buy\r\n",
"5/9/2022,270.059998,Buy\r\n",
"5/10/2022,271.690002,Buy\r\n",
"5/11/2022,265.679993,Buy\r\n",
"5/12/2022,257.690002,Buy\r\n",
"5/13/2022,257.350006,Buy\r\n",
"5/16/2022,259.959991,Buy\r\n",
"5/17/2022,266.109985,Buy\r\n",
"5/18/2022,263.000000,Buy\r\n",
"5/19/2022,253.899994,Buy\r\n",
"5/20/2022,257.239990,Buy\r\n",
"5/23/2022,255.490005,Buy\r\n",
"5/24/2022,257.890015,Buy\r\n",
"5/25/2022,258.140015,Buy\r\n",
"5/26/2022,262.269989,Buy\r\n",
"5/27/2022,268.480011,Sell\r\n",
"5/31/2022,272.529999,Sell\r\n",
"6/1/2022,275.200012,Sell\r\n",
"6/2/2022,264.450012,Buy\r\n",
"6/3/2022,270.309998,Sell\r\n",
"6/6/2022,272.059998,Sell\r\n",
"6/7/2022,266.640015,Sell\r\n",
"6/8/2022,271.709991,Sell\r\n",
"6/9/2022,267.779999,Sell\r\n",
"6/10/2022,260.579987,Buy\r\n",
"6/13/2022,245.110001,Buy\r\n",
"6/14/2022,243.860001,Buy\r\n",
"6/15/2022,248.309998,Buy\r\n",
"6/16/2022,245.979996,Buy\r\n",
"6/17/2022,244.699997,Buy\r\n",
"6/21/2022,250.259995,Buy\r\n",
"6/22/2022,251.889999,Buy\r\n",
"6/23/2022,255.570007,Buy\r\n",
"6/24/2022,261.809998,Sell\r\n",
"6/27/2022,268.209991,Sell\r\n",
"6/28/2022,263.980011,Sell\r\n",
"6/29/2022,257.589996,Buy\r\n",
"6/30/2022,257.049988,Buy\r\n",
"7/1/2022,256.390015,Buy\r\n",
"7/5/2022,256.160004,Buy\r\n",
"7/6/2022,263.750000,Sell\r\n",
"7/7/2022,265.119995,Sell\r\n",
"7/8/2022,264.790009,Sell\r\n",
"7/11/2022,265.649994,Sell\r\n",
"7/12/2022,265.880005,Sell\r\n",
"7/13/2022,250.190002,Buy\r\n",
"7/14/2022,250.570007,Buy\r\n",
"7/15/2022,255.720001,Buy\r\n",
"7/18/2022,259.750000,Sell\r\n",
"7/19/2022,257.579987,Buy\r\n",
"7/20/2022,259.899994,Sell\r\n",
"7/21/2022,259.790009,Sell\r\n",
"7/22/2022,265.239990,Sell\r\n",
"7/25/2022,261.000000,Sell\r\n",
"7/26/2022,259.859985,Sell\r\n",
"7/27/2022,261.160004,Sell\r\n",
"7/28/2022,269.750000,Sell\r\n",
"7/29/2022,277.700012,Sell\r\n",
"8/1/2022,277.820007,Sell\r\n",
"8/2/2022,276.000000,Sell\r\n",
"8/3/2022,276.760010,Sell\r\n",
"8/4/2022,281.799988,Sell\r\n",
"8/5/2022,279.149994,Sell\r\n",
"8/8/2022,284.049988,Sell\r\n",
"8/9/2022,279.640015,Sell\r\n",
"8/10/2022,288.170013,Sell\r\n",
"8/11/2022,290.850006,Sell\r\n",
"8/12/2022,288.480011,Sell\r\n",
"8/15/2022,291.000000,Sell\r\n",
"8/16/2022,291.989990,Sell\r\n",
"8/17/2022,289.739990,Sell\r\n",
"8/18/2022,290.190002,Sell\r\n",
"8/19/2022,288.899994,Sell\r\n",
"8/22/2022,282.079987,Sell\r\n",
"8/23/2022,276.440002,Buy\r\n",
"8/24/2022,275.410004,Buy\r\n",
"8/25/2022,277.329987,Buy\r\n",
"8/26/2022,279.079987,Buy\r\n",
"8/29/2022,265.850006,Buy\r\n",
"8/30/2022,266.670013,Buy\r\n",
"8/31/2022,265.390015,Buy\r\n",
"9/1/2022,258.869995,Buy\r\n",
"9/2/2022,261.700012,Buy\r\n",
"9/6/2022,256.200012,Buy\r\n",
"9/7/2022,254.699997,Buy\r\n",
"9/8/2022,257.510010,Buy\r\n",
"9/9/2022,260.500000,Buy\r\n",
"9/12/2022,265.779999,Buy\r\n",
"9/13/2022,258.839996,Buy\r\n",
"9/14/2022,253.529999,Buy\r\n",
"9/15/2022,249.770004,Buy\r\n",
"9/16/2022,244.259995,Buy\r\n",
"9/19/2022,242.470001,Buy\r\n",
"9/20/2022,242.070007,Buy\r\n",
"9/21/2022,244.270004,Buy\r\n",
"9/22/2022,237.869995,Buy\r\n",
"9/23/2022,239.539993,Buy\r\n",
"9/26/2022,237.050003,Buy\r\n",
"9/27/2022,239.979996,Buy\r\n",
"9/28/2022,236.809998,Buy\r\n",
"9/29/2022,238.889999,Buy\r\n",
"9/30/2022,238.289993,Buy\r\n",
"10/3/2022,235.410004,Buy\r\n",
"10/4/2022,245.089996,Buy\r\n",
"10/5/2022,245.990005,Sell\r\n",
"10/6/2022,247.929993,Sell\r\n",
"10/7/2022,240.899994,Buy\r\n",
"10/10/2022,233.050003,Buy\r\n",
"10/11/2022,227.619995,Buy\r\n",
"10/12/2022,225.399994,Buy\r\n",
"10/13/2022,219.850006,Buy\r\n",
"10/14/2022,235.539993,Buy\r\n",
"10/17/2022,235.820007,Buy\r\n",
"10/18/2022,243.240005,Sell\r\n",
"10/19/2022,237.039993,Buy\r\n",
"10/20/2022,235.770004,Buy\r\n",
"10/21/2022,234.740005,Buy\r\n",
"10/24/2022,243.759995,Sell\r\n",
"10/25/2022,247.259995,Sell\r\n",
"10/26/2022,231.169998,Buy\r\n",
"10/27/2022,231.039993,Buy\r\n",
"10/28/2022,226.240005,Buy\r\n",
"10/31/2022,233.759995,Buy\r\n",
"11/1/2022,234.600006,Buy\r\n",
"11/2/2022,229.460007,Buy\r\n",
"11/3/2022,220.089996,Buy\r\n",
"11/4/2022,217.550003,Buy\r\n",
"11/7/2022,221.990005,Buy\r\n",
"11/8/2022,228.699997,Buy\r\n",
"11/9/2022,227.369995,Buy\r\n",
"11/10/2022,235.429993,Sell\r\n",
"11/11/2022,242.990005,Sell\r\n",
"11/14/2022,241.990005,Sell\r\n",
"11/15/2022,245.660004,Sell\r\n",
"11/16/2022,242.789993,Sell\r\n",
"11/17/2022,237.779999,Sell\r\n",
"11/18/2022,243.509995,Sell\r\n",
"11/21/2022,241.429993,Sell\r\n",
"11/22/2022,243.589996,Sell\r\n",
"11/23/2022,245.110001,Sell\r\n",
"11/25/2022,247.309998,Sell\r\n",
"11/28/2022,246.080002,Sell\r\n",
"11/29/2022,241.399994,Sell\r\n",
"11/30/2022,240.570007,Sell\r\n",
"12/1/2022,253.869995,Sell\r\n",
"12/2/2022,249.820007,Sell\r\n",
"12/5/2022,252.009995,Sell\r\n",
"12/6/2022,250.820007,Sell\r\n",
"12/7/2022,244.830002,Sell\r\n",
"12/8/2022,244.839996,Sell\r\n",
"12/9/2022,244.699997,Buy\r\n",
"12/12/2022,247.449997,Sell\r\n",
"12/13/2022,261.690002,Sell\r\n",
"12/14/2022,257.130005,Sell\r\n",
"12/15/2022,253.720001,Sell\r\n",
"12/16/2022,248.550003,Sell\r\n",
"12/19/2022,244.860001,Buy\r\n",
"12/20/2022,239.399994,Buy\r\n",
"12/21/2022,241.690002,Buy\r\n",
"12/22/2022,241.259995,Buy\r\n",
"12/23/2022,236.110001,Buy\r\n",
"12/27/2022,238.699997,Buy\r\n",
"12/28/2022,236.889999,Buy\r\n",
"12/29/2022,235.649994,Buy\r\n",
"12/30/2022,238.210007,Buy\r\n",
"1/3/2023,243.080002,Buy\r\n",
"1/4/2023,232.279999,Buy\r\n",
"1/5/2023,227.199997,Buy\r\n",
"1/6/2023,223.000000,Buy\r\n",
"1/9/2023,226.449997,Buy\r\n",
"1/10/2023,227.759995,Buy\r\n",
"1/11/2023,231.289993,Buy\r\n",
"1/12/2023,235.259995,Buy\r\n",
"1/13/2023,237.000000,Sell\r\n",
"1/17/2023,237.970001,Sell\r\n",
"1/18/2023,241.570007,Sell\r\n",
"1/19/2023,233.779999,Buy\r\n",
"1/20/2023,234.860001,Buy\r\n",
"1/23/2023,241.100006,Sell\r\n",
"1/24/2023,242.500000,Sell\r\n",
"1/25/2023,234.479996,Buy\r\n",
"1/26/2023,243.649994,Sell\r\n",
"1/27/2023,248.990005,Sell\r\n",
"1/30/2023,244.509995,Sell\r\n",
"1/31/2023,243.449997,Sell\r\n",
"2/1/2023,248.000000,Sell\r\n",
"2/2/2023,258.820007,Sell\r\n",
"2/3/2023,259.540009,Sell\r\n",
"2/6/2023,257.440002,Sell\r\n",
"2/7/2023,260.529999,Sell\r\n",
"2/8/2023,273.200012,Sell\r\n",
"2/9/2023,273.799988,Sell\r\n",
"2/10/2023,261.529999,Sell\r\n",
"2/13/2023,267.640015,Sell\r\n",
"2/14/2023,272.670013,Sell\r\n",
"2/15/2023,268.320007,Sell\r\n",
"2/16/2023,264.019989,Sell\r\n",
"2/17/2023,259.390015,Sell\r\n",
"2/21/2023,254.479996,Buy\r\n",
"2/22/2023,254.089996,Buy\r\n",
"2/23/2023,255.559998,Buy\r\n",
"2/24/2023,249.960007,Buy\r\n",
"2/27/2023,252.460007,Buy\r\n",
"2/28/2023,249.070007,Buy\r\n",
"3/1/2023,250.759995,Buy\r\n",
"3/2/2023,246.550003,Buy\r\n",
"3/3/2023,252.190002,Buy\r\n",
"3/6/2023,256.429993,Buy\r\n",
"3/7/2023,256.299988,Buy\r\n",
"3/8/2023,254.039993,Buy\r\n",
"3/9/2023,255.820007,Buy\r\n",
"3/10/2023,251.080002,Buy\r\n",
"3/13/2023,247.399994,Buy\r\n",
"3/14/2023,256.750000,Sell\r\n",
"3/15/2023,259.980011,Sell\r\n",
"3/16/2023,265.209991,Sell\r\n",
"3/17/2023,278.260010,Sell\r\n",
"3/20/2023,276.980011,Sell\r\n",
"3/21/2023,274.880005,Sell\r\n",
"3/22/2023,273.399994,Sell\r\n",
"3/23/2023,277.940002,Sell\r\n",
"3/24/2023,277.239990,Sell\r\n",
"3/27/2023,280.500000,Sell\r\n",
"3/28/2023,275.790009,Sell\r\n",
"3/29/2023,278.959991,Sell\r\n",
"3/30/2023,284.230011,Sell\r\n",
"3/31/2023,283.730011,Sell\r\n",
"4/3/2023,286.519989,Sell\r\n",
"4/4/2023,287.230011,Sell\r\n",
"4/5/2023,285.850006,Sell\r\n",
"4/6/2023,283.209991,Sell\r\n",
"4/10/2023,289.209991,Sell\r\n",
"4/11/2023,285.750000,Sell\r\n",
"4/12/2023,284.790009,Sell\r\n",
"4/13/2023,283.589996,Sell\r\n",
"4/14/2023,287.000000,Sell\r\n",
"4/17/2023,289.929993,Sell\r\n",
"4/18/2023,291.570007,Sell\r\n",
"4/19/2023,285.989990,Sell\r\n",
"4/20/2023,285.250000,Sell\r\n",
"4/21/2023,285.010010,Sell\r\n",
"4/24/2023,282.089996,Buy\r\n",
"4/25/2023,279.510010,Buy\r\n",
"4/26/2023,296.700012,Sell\r\n",
"4/27/2023,295.970001,Sell\r\n",
"4/28/2023,304.010010,Sell\r\n",
"5/1/2023,306.970001,Sell\r\n",
"5/2/2023,307.760010,Sell\r\n",
"5/3/2023,306.619995,Sell\r\n",
"5/4/2023,306.239990,Sell\r\n",
"5/5/2023,305.720001,Sell\r\n",
"5/8/2023,310.130005,Sell\r\n",
"5/9/2023,308.000000,Sell\r\n",
"5/10/2023,308.619995,Sell\r\n",
"5/11/2023,310.100006,Sell\r\n",
"5/12/2023,310.549988,Sell\r\n",
"5/15/2023,309.100006,Sell\r\n",
"5/16/2023,309.829987,Sell\r\n",
"5/17/2023,312.290009,Sell\r\n",
"5/18/2023,314.529999,Sell\r\n",
"5/19/2023,316.739990,Sell\r\n",
"5/22/2023,318.600006,Sell\r\n",
"5/23/2023,320.029999,Sell\r\n",
"5/24/2023,314.730011,Sell\r\n",
"5/25/2023,323.239990,Sell\r\n",
"5/26/2023,324.019989,Sell\r\n",
"5/30/2023,335.230011,Sell\r\n",
"5/31/2023,332.290009,Sell\r\n",
"6/1/2023,325.929993,Sell\r\n",
"6/2/2023,334.250000,Sell\r\n",
"6/5/2023,335.220001,Sell\r\n",
"6/6/2023,335.329987,Sell\r\n",
"6/7/2023,331.649994,Sell\r\n",
"6/8/2023,323.940002,Sell\r\n",
"6/9/2023,324.989990,Sell\r\n",
"6/12/2023,328.579987,Sell\r\n",
"6/13/2023,334.470001,Sell\r\n",
"6/14/2023,334.339996,Sell\r\n",
"6/15/2023,337.480011,Sell\r\n",
"6/16/2023,351.320007,Sell\r\n",
"6/20/2023,339.309998,Sell\r\n",
"6/21/2023,336.369995,Sell\r\n",
"6/22/2023,334.119995,Sell\r\n",
"6/23/2023,334.359985,Sell\r\n",
"6/26/2023,333.720001,Sell\r\n",
"6/27/2023,331.859985,Buy\r\n",
"6/28/2023,334.660004,Sell\r\n",
"6/29/2023,334.709991,Sell\r\n",
"6/30/2023,337.750000,Sell\r\n",
"7/3/2023,339.190002,Sell\r\n",
"7/5/2023,335.089996,Sell\r\n",
"7/6/2023,337.299988,Sell\r\n",
"7/7/2023,339.320007,Sell\r\n",
"7/10/2023,334.600006,Buy\r\n",
"7/11/2023,331.059998,Buy\r\n",
"7/12/2023,336.600006,Sell\r\n",
"7/13/2023,339.559998,Sell\r\n",
"7/14/2023,347.589996,Sell\r\n",
"7/17/2023,345.679993,Sell\r\n",
"7/18/2023,345.829987,Sell\r\n",
"7/19/2023,361.750000,Sell\r\n",
"7/20/2023,353.570007,Sell\r\n",
"7/21/2023,349.149994,Sell\r\n",
"7/24/2023,345.850006,Sell\r\n",
"7/25/2023,347.109985,Sell\r\n",
"7/26/2023,341.440002,Buy\r\n",
"7/27/2023,340.480011,Buy\r\n",
"7/28/2023,333.670013,Buy\r\n",
"7/31/2023,336.920013,Buy\r\n",
"8/1/2023,335.190002,Buy\r\n",
"8/2/2023,333.630005,Buy\r\n",
"8/3/2023,326.000000,Buy\r\n",
"8/4/2023,331.880005,Buy\r\n",
"8/7/2023,328.369995,Buy\r\n",
"8/8/2023,326.959991,Buy\r\n",
"8/9/2023,326.470001,Buy\r\n",
"8/10/2023,326.019989,Buy\r\n",
"8/11/2023,320.260010,Buy\r\n",
"8/14/2023,321.390015,Buy\r\n",
"8/15/2023,323.000000,Buy\r\n",
"8/16/2023,320.799988,Buy\r\n",
"8/17/2023,320.540009,Buy\r\n",
"8/18/2023,314.489990,Buy\r\n",
"8/21/2023,317.929993,Buy\r\n",
"8/22/2023,325.500000,Buy\r\n",
"8/23/2023,323.820007,Buy\r\n",
"8/24/2023,332.850006,Sell\r\n",
"8/25/2023,321.470001,Buy\r\n",
"8/28/2023,325.660004,Sell\r\n",
"8/29/2023,321.880005,Buy\r\n",
"8/30/2023,328.670013,Sell\r\n",
"8/31/2023,329.200012,Sell\r\n",
"9/1/2023,331.309998,Sell\r\n",
"9/5/2023,329.000000,Sell\r\n",
"9/6/2023,333.380005,Sell\r\n",
"9/7/2023,331.290009,Sell\r\n",
"9/8/2023,330.089996,Sell\r\n",
"9/11/2023,337.239990,Sell\r\n",
"9/12/2023,335.820007,Sell\r\n",
"9/13/2023,331.309998,Sell\r\n",
"9/14/2023,339.149994,Sell\r\n",
"9/15/2023,336.920013,Sell\r\n",
"9/18/2023,327.799988,Buy\r\n",
"9/19/2023,326.170013,Buy\r\n",
"9/20/2023,329.510010,Buy\r\n",
"9/21/2023,319.260010,Buy\r\n",
"9/22/2023,321.320007,Buy\r\n",
"9/25/2023,316.589996,Buy\r\n",
"9/26/2023,315.130005,Buy\r\n",
"9/27/2023,312.299988,Buy\r\n",
"9/28/2023,310.989990,Buy\r\n",
"9/29/2023,317.750000,Buy\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td><td><span>Action</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-10-29\">Oct 29, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.110001</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-10-30\">Oct 30, 2018</time></td><td><div class=\"dni-plaintext\"><pre>103.660004</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-10-31\">Oct 31, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.440002</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-01\">Nov 01, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.050003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-02\">Nov 02, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.480003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-05\">Nov 05, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.370003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-06\">Nov 06, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.379997</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-08\">Nov 08, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.800003</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-09\">Nov 09, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.849998</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-12\">Nov 12, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.419998</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-16\">Nov 16, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.080002</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-21\">Nov 21, 2018</time></td><td><div class=\"dni-plaintext\"><pre>103.599998</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-23\">Nov 23, 2018</time></td><td><div class=\"dni-plaintext\"><pre>102.169998</pre></div></td><td><span>Buy</span></td></tr><tr><td colspan=\"3\"><i>(1219 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var actions =\n",
" from e in mavg\n",
" select new\n",
" {\n",
" e.Date,\n",
" e.Price,\n",
" Action = e.Price < e.Avg ? Trade.Buy : Trade.Sell,\n",
" };\n",
"\n",
"actions.ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That was easy, but wait! There's a problem! We can't buy or sell _every day_ the stock price is below or above the moving average. Think about it, once we've sold all the stock we're holding, we can't sell more so what we want instead, is to buy the _first time_ it dips below the moving average and sell the _first time_ it goes above. We will use [`GroupAdjacent`] from MoreLINQ to help here, by grouping all _adjacent trade actions_ together:\n",
"\n",
"[`GroupAdjacent`]: https://morelinq.github.io/4.0/ref/api/html/Overload_MoreLinq_MoreEnumerable_GroupAdjacent.htm"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/26/2018, Price = 105.690002, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/29/2018, Price = 108.110001, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-29\">Oct 29, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.110001</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/30/2018, Price = 103.660004, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-30\">Oct 30, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.660004</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>3</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/31/2018, Price = 105.440002, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-31\">Oct 31, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.440002</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>4</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/1/2018, Price = 107.050003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-01\">Nov 01, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.050003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>5</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/2/2018, Price = 106.480003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-02\">Nov 02, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.480003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>6</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/5/2018, Price = 106.370003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-05\">Nov 05, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.370003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>7</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/6/2018, Price = 107.379997, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-06\">Nov 06, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.379997</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>1</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/7/2018, Price = 109.440002, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/8/2018, Price = 111.800003, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-08\">Nov 08, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>111.800003</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/9/2018, Price = 110.849998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-09\">Nov 09, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>110.849998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>3</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/12/2018, Price = 109.419998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-12\">Nov 12, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.419998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>2</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/13/2018, Price = 107.550003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>3</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/14/2018, Price = 108.099998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var byAction = actions.GroupAdjacent(e => e.Action);\n",
"\n",
"byAction.Take(4) // just show the first 4 groups for brevity"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`GroupAdjacent` is like [`GroupBy`] in LINQ except it yields a group whenever the key changes. Put another way, it keeps grouping the elements of a sequence _as long as_ they share the same key and yields that one group when a different key is encountered. If the key of a previously yielded group appears again later in the sequence then it's considered a separate group of adjacent elements.\n",
"\n",
"Since we won't have any position in the market to start with, meaning we won't be holding any stock initially, we also want to make sure that the first action is to buy (when we enter or take a position in the market), not sell:\n",
"\n",
"[`GroupBy`]: https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.groupby"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [],
"source": [
"byAction = byAction.SkipWhile(e => e.Key is Trade.Sell);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From each group of trade actions, we just want to keep the _first_ buy or sell:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price,Action\r\n",
"10/26/2018,105.690002,Buy\r\n",
"11/7/2018,109.440002,Sell\r\n",
"11/13/2018,107.550003,Buy\r\n",
"11/14/2018,108.099998,Sell\r\n",
"11/15/2018,104.989998,Buy\r\n",
"11/19/2018,108.269997,Sell\r\n",
"11/20/2018,101.800003,Buy\r\n",
"11/28/2018,107.889999,Sell\r\n",
"12/6/2018,105.820000,Buy\r\n",
"12/7/2018,108.379997,Sell\r\n",
"12/10/2018,104.800003,Buy\r\n",
"12/11/2018,109.800003,Sell\r\n",
"12/17/2018,105.410004,Buy\r\n",
"1/8/2019,103.040001,Sell\r\n",
"1/31/2019,103.800003,Buy\r\n",
"2/5/2019,106.059998,Sell\r\n",
"2/8/2019,104.389999,Buy\r\n",
"2/11/2019,106.199997,Sell\r\n",
"3/8/2019,109.160004,Buy\r\n",
"3/11/2019,110.989998,Sell\r\n",
"5/9/2019,124.290001,Buy\r\n",
"5/16/2019,126.750000,Sell\r\n",
"5/20/2019,126.519997,Buy\r\n",
"5/21/2019,127.430000,Sell\r\n",
"5/22/2019,126.620003,Buy\r\n",
"5/24/2019,126.910004,Sell\r\n",
"5/29/2019,125.379997,Buy\r\n",
"6/6/2019,126.440002,Sell\r\n",
"7/18/2019,135.550003,Buy\r\n",
"7/19/2019,140.220001,Sell\r\n",
"8/1/2019,137.000000,Buy\r\n",
"8/9/2019,138.610001,Sell\r\n",
"8/12/2019,137.070007,Buy\r\n",
"8/19/2019,137.850006,Sell\r\n",
"8/26/2019,134.990005,Buy\r\n",
"8/29/2019,137.250000,Sell\r\n",
"9/10/2019,136.800003,Buy\r\n",
"9/12/2019,137.850006,Sell\r\n",
"9/16/2019,135.830002,Buy\r\n",
"9/19/2019,140.300003,Sell\r\n",
"9/25/2019,137.500000,Buy\r\n",
"9/26/2019,139.440002,Sell\r\n",
"9/30/2019,138.050003,Buy\r\n",
"10/1/2019,139.660004,Sell\r\n",
"10/2/2019,136.250000,Buy\r\n",
"10/10/2019,138.490005,Sell\r\n",
"10/21/2019,138.449997,Buy\r\n",
"10/22/2019,138.970001,Sell\r\n",
"10/23/2019,136.880005,Buy\r\n",
"10/24/2019,139.389999,Sell\r\n",
"12/3/2019,147.490005,Buy\r\n",
"12/4/2019,150.139999,Sell\r\n",
"1/27/2020,161.149994,Buy\r\n",
"1/28/2020,163.779999,Sell\r\n",
"2/24/2020,167.770004,Buy\r\n",
"3/27/2020,151.750000,Sell\r\n",
"5/14/2020,177.539993,Buy\r\n",
"5/15/2020,179.059998,Sell\r\n",
"5/27/2020,180.199997,Buy\r\n",
"5/29/2020,182.729996,Sell\r\n",
"6/1/2020,182.539993,Buy\r\n",
"6/2/2020,184.250000,Sell\r\n",
"6/5/2020,182.619995,Buy\r\n",
"6/8/2020,185.940002,Sell\r\n",
"6/15/2020,184.580002,Buy\r\n",
"6/16/2020,192.889999,Sell\r\n",
"7/17/2020,204.470001,Buy\r\n",
"7/21/2020,213.660004,Sell\r\n",
"7/24/2020,200.419998,Buy\r\n",
"8/3/2020,211.520004,Sell\r\n",
"8/11/2020,207.160004,Buy\r\n",
"8/13/2020,209.440002,Sell\r\n",
"9/4/2020,215.100006,Buy\r\n",
"9/28/2020,210.880005,Sell\r\n",
"9/29/2020,209.350006,Buy\r\n",
"10/1/2020,213.490005,Sell\r\n",
"10/26/2020,213.850006,Buy\r\n",
"11/4/2020,214.020004,Sell\r\n",
"11/11/2020,212.389999,Buy\r\n",
"11/12/2020,217.210007,Sell\r\n",
"11/19/2020,211.380005,Buy\r\n",
"11/25/2020,215.110001,Sell\r\n",
"11/30/2020,214.100006,Buy\r\n",
"12/9/2020,215.160004,Sell\r\n",
"12/10/2020,211.770004,Buy\r\n",
"12/15/2020,215.169998,Sell\r\n",
"1/5/2021,217.259995,Buy\r\n",
"1/8/2021,218.679993,Sell\r\n",
"1/11/2021,218.470001,Buy\r\n",
"1/21/2021,224.699997,Sell\r\n",
"2/22/2021,237.419998,Buy\r\n",
"3/10/2021,237.000000,Sell\r\n",
"3/11/2021,234.960007,Buy\r\n",
"3/16/2021,236.279999,Sell\r\n",
"3/18/2021,232.559998,Buy\r\n",
"3/23/2021,237.490005,Sell\r\n",
"3/26/2021,231.550003,Buy\r\n",
"3/29/2021,236.589996,Sell\r\n",
"3/30/2021,233.529999,Buy\r\n",
"4/1/2021,238.470001,Sell\r\n",
"4/30/2021,249.740005,Buy\r\n",
"5/25/2021,251.770004,Sell\r\n",
"6/3/2021,245.220001,Buy\r\n",
"6/4/2021,247.759995,Sell\r\n",
"9/10/2021,298.420013,Buy\r\n",
"9/15/2021,303.260010,Sell\r\n",
"9/20/2021,296.329987,Buy\r\n",
"10/7/2021,295.179993,Sell\r\n",
"10/11/2021,292.920013,Buy\r\n",
"10/12/2021,295.339996,Sell\r\n",
"11/26/2021,334.350006,Buy\r\n",
"12/8/2021,335.309998,Sell\r\n",
"12/9/2021,334.410004,Buy\r\n",
"12/13/2021,340.679993,Sell\r\n",
"12/14/2021,333.220001,Buy\r\n",
"12/16/2021,335.709991,Sell\r\n",
"12/17/2021,320.880005,Buy\r\n",
"12/23/2021,332.750000,Sell\r\n",
"1/5/2022,325.859985,Buy\r\n",
"2/1/2022,310.410004,Sell\r\n",
"2/4/2022,300.209991,Buy\r\n",
"2/9/2022,309.869995,Sell\r\n",
"2/10/2022,304.040009,Buy\r\n",
"3/3/2022,302.890015,Sell\r\n",
"3/4/2022,294.290009,Buy\r\n",
"3/17/2022,293.290009,Sell\r\n",
"4/7/2022,296.660004,Buy\r\n",
"5/5/2022,285.540009,Sell\r\n",
"5/6/2022,274.809998,Buy\r\n",
"5/27/2022,268.480011,Sell\r\n",
"6/2/2022,264.450012,Buy\r\n",
"6/3/2022,270.309998,Sell\r\n",
"6/10/2022,260.579987,Buy\r\n",
"6/24/2022,261.809998,Sell\r\n",
"6/29/2022,257.589996,Buy\r\n",
"7/6/2022,263.750000,Sell\r\n",
"7/13/2022,250.190002,Buy\r\n",
"7/18/2022,259.750000,Sell\r\n",
"7/19/2022,257.579987,Buy\r\n",
"7/20/2022,259.899994,Sell\r\n",
"8/23/2022,276.440002,Buy\r\n",
"10/5/2022,245.990005,Sell\r\n",
"10/7/2022,240.899994,Buy\r\n",
"10/18/2022,243.240005,Sell\r\n",
"10/19/2022,237.039993,Buy\r\n",
"10/24/2022,243.759995,Sell\r\n",
"10/26/2022,231.169998,Buy\r\n",
"11/10/2022,235.429993,Sell\r\n",
"12/9/2022,244.699997,Buy\r\n",
"12/12/2022,247.449997,Sell\r\n",
"12/19/2022,244.860001,Buy\r\n",
"1/13/2023,237.000000,Sell\r\n",
"1/19/2023,233.779999,Buy\r\n",
"1/23/2023,241.100006,Sell\r\n",
"1/25/2023,234.479996,Buy\r\n",
"1/26/2023,243.649994,Sell\r\n",
"2/21/2023,254.479996,Buy\r\n",
"3/14/2023,256.750000,Sell\r\n",
"4/24/2023,282.089996,Buy\r\n",
"4/26/2023,296.700012,Sell\r\n",
"6/27/2023,331.859985,Buy\r\n",
"6/28/2023,334.660004,Sell\r\n",
"7/10/2023,334.600006,Buy\r\n",
"7/12/2023,336.600006,Sell\r\n",
"7/26/2023,341.440002,Buy\r\n",
"8/24/2023,332.850006,Sell\r\n",
"8/25/2023,321.470001,Buy\r\n",
"8/28/2023,325.660004,Sell\r\n",
"8/29/2023,321.880005,Buy\r\n",
"8/30/2023,328.670013,Sell\r\n",
"9/18/2023,327.799988,Buy\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td><td><span>Action</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-12-06\">Dec 06, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.820000</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-12-07\">Dec 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.379997</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-12-10\">Dec 10, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.800003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2018-12-11\">Dec 11, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.800003</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2018-12-17\">Dec 17, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.410004</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2019-01-08\">Jan 08, 2019</time></td><td><div class=\"dni-plaintext\"><pre>103.040001</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2019-01-31\">Jan 31, 2019</time></td><td><div class=\"dni-plaintext\"><pre>103.800003</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2019-02-05\">Feb 05, 2019</time></td><td><div class=\"dni-plaintext\"><pre>106.059998</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2019-02-08\">Feb 08, 2019</time></td><td><div class=\"dni-plaintext\"><pre>104.389999</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2019-02-11\">Feb 11, 2019</time></td><td><div class=\"dni-plaintext\"><pre>106.199997</pre></div></td><td><span>Sell</span></td></tr><tr><td><time datetime=\"2019-03-08\">Mar 08, 2019</time></td><td><div class=\"dni-plaintext\"><pre>109.160004</pre></div></td><td><span>Buy</span></td></tr><tr><td><time datetime=\"2019-03-11\">Mar 11, 2019</time></td><td><div class=\"dni-plaintext\"><pre>110.989998</pre></div></td><td><span>Sell</span></td></tr><tr><td colspan=\"3\"><i>(151 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"actions = from g in byAction\n",
" select g.First();\n",
"\n",
"actions.ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, a buy is always followed by a sell, which in turn is followed by a buy, and so on. Let's connect each buy with its sell and use [`Batch`] from MoreLINQ to create batches of two actions (.NET 6 added [`Chunk`] that does the same, but `Batch` has been around in MoreLINQ since 2009 and therefore available for use in earlier versions of .NET and .NET Framework):\n",
"\n",
"[`Batch`]: https://morelinq.github.io/4.0/ref/api/html/M_MoreLinq_MoreEnumerable_Batch__1.\n",
"[`Chunk`]: https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.chunk"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/26/2018, Price = 105.690002, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/7/2018, Price = 109.440002, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>1</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/13/2018, Price = 107.550003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/14/2018, Price = 108.099998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>2</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/15/2018, Price = 104.989998, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/19/2018, Price = 108.269997, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>3</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/20/2018, Price = 101.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/28/2018, Price = 107.889999, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>4</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/6/2018, Price = 105.820000, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-06\">Dec 06, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.820000</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/7/2018, Price = 108.379997, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-07\">Dec 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.379997</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>5</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/10/2018, Price = 104.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-10\">Dec 10, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/11/2018, Price = 109.800003, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-11\">Dec 11, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.800003</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>6</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/17/2018, Price = 105.410004, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-17\">Dec 17, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.410004</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/8/2019, Price = 103.040001, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-01-08\">Jan 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.040001</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>7</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/31/2019, Price = 103.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-01-31\">Jan 31, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/5/2019, Price = 106.059998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-05\">Feb 05, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.059998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>8</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/8/2019, Price = 104.389999, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-08\">Feb 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.389999</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/11/2019, Price = 106.199997, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-11\">Feb 11, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.199997</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>9</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/8/2019, Price = 109.160004, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-03-08\">Mar 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.160004</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/11/2019, Price = 110.989998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-03-11\">Mar 11, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>110.989998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>10</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/9/2019, Price = 124.290001, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-09\">May 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>124.290001</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/16/2019, Price = 126.750000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-16\">May 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.750000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>11</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/20/2019, Price = 126.519997, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-20\">May 20, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.519997</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/21/2019, Price = 127.430000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-21\">May 21, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>127.430000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>12</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/22/2019, Price = 126.620003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-22\">May 22, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.620003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/24/2019, Price = 126.910004, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-24\">May 24, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.910004</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>13</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/29/2019, Price = 125.379997, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-29\">May 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>125.379997</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 6/6/2019, Price = 126.440002, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-06-06\">Jun 06, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.440002</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>14</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/18/2019, Price = 135.550003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-07-18\">Jul 18, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>135.550003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/19/2019, Price = 140.220001, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-07-19\">Jul 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>140.220001</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>15</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/1/2019, Price = 137.000000, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-01\">Aug 01, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.000000</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/9/2019, Price = 138.610001, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-09\">Aug 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>138.610001</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>16</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/12/2019, Price = 137.070007, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-12\">Aug 12, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.070007</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/19/2019, Price = 137.850006, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-19\">Aug 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>17</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/26/2019, Price = 134.990005, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-26\">Aug 26, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>134.990005</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/29/2019, Price = 137.250000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-29\">Aug 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.250000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>18</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/10/2019, Price = 136.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-10\">Sep 10, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>136.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/12/2019, Price = 137.850006, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-12\">Sep 12, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>19</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/16/2019, Price = 135.830002, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-16\">Sep 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>135.830002</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/19/2019, Price = 140.300003, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-19\">Sep 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>140.300003</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td colspan=\"2\"><i>... (more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var batches = actions.Batch(2);\n",
"\n",
"batches"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's make sure we always have a batch of 2 because if the last trade action was a buy then we will have a batch of a single element and that's no good."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/26/2018, Price = 105.690002, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/7/2018, Price = 109.440002, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>1</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/13/2018, Price = 107.550003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/14/2018, Price = 108.099998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>2</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/15/2018, Price = 104.989998, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/19/2018, Price = 108.269997, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>3</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/20/2018, Price = 101.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/28/2018, Price = 107.889999, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>4</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/6/2018, Price = 105.820000, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-06\">Dec 06, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.820000</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/7/2018, Price = 108.379997, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-07\">Dec 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.379997</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>5</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/10/2018, Price = 104.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-10\">Dec 10, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/11/2018, Price = 109.800003, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-11\">Dec 11, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.800003</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>6</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/17/2018, Price = 105.410004, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-17\">Dec 17, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.410004</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/8/2019, Price = 103.040001, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-01-08\">Jan 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.040001</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>7</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/31/2019, Price = 103.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-01-31\">Jan 31, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/5/2019, Price = 106.059998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-05\">Feb 05, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.059998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>8</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/8/2019, Price = 104.389999, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-08\">Feb 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.389999</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/11/2019, Price = 106.199997, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-11\">Feb 11, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.199997</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>9</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/8/2019, Price = 109.160004, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-03-08\">Mar 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.160004</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/11/2019, Price = 110.989998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-03-11\">Mar 11, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>110.989998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>10</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/9/2019, Price = 124.290001, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-09\">May 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>124.290001</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/16/2019, Price = 126.750000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-16\">May 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.750000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>11</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/20/2019, Price = 126.519997, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-20\">May 20, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.519997</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/21/2019, Price = 127.430000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-21\">May 21, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>127.430000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>12</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/22/2019, Price = 126.620003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-22\">May 22, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.620003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/24/2019, Price = 126.910004, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-24\">May 24, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.910004</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>13</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/29/2019, Price = 125.379997, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-29\">May 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>125.379997</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 6/6/2019, Price = 126.440002, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-06-06\">Jun 06, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.440002</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>14</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/18/2019, Price = 135.550003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-07-18\">Jul 18, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>135.550003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/19/2019, Price = 140.220001, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-07-19\">Jul 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>140.220001</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>15</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/1/2019, Price = 137.000000, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-01\">Aug 01, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.000000</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/9/2019, Price = 138.610001, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-09\">Aug 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>138.610001</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>16</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/12/2019, Price = 137.070007, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-12\">Aug 12, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.070007</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/19/2019, Price = 137.850006, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-19\">Aug 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>17</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/26/2019, Price = 134.990005, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-26\">Aug 26, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>134.990005</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/29/2019, Price = 137.250000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-29\">Aug 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.250000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>18</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/10/2019, Price = 136.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-10\">Sep 10, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>136.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/12/2019, Price = 137.850006, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-12\">Sep 12, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td>19</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/16/2019, Price = 135.830002, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-16\">Sep 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>135.830002</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/19/2019, Price = 140.300003, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-19\">Sep 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>140.300003</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></td></tr><tr><td colspan=\"2\"><i>... (more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"batches =\n",
" from b in batches\n",
" where b.Length is 2\n",
" select b;\n",
"\n",
"batches"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So just the way we used [`Fold`] earlier, when parsing the CSV data, to turn a sequence of fields into a single row object, we can use it to _fold each batch_ of buy-sell information into a single object that will represent our pair of buy-sell trades:\n",
"\n",
"[`Fold`]: https://morelinq.github.io/4.0/ref/api/html/Overload_MoreLinq_MoreEnumerable_Fold.htm"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 10/26/2018, Price = 105.690002 }, Sell = { Date = 11/7/2018, Price = 109.440002 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/26/2018, Price = 105.690002 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/7/2018, Price = 109.440002 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 11/13/2018, Price = 107.550003 }, Sell = { Date = 11/14/2018, Price = 108.099998 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/13/2018, Price = 107.550003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/14/2018, Price = 108.099998 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 11/15/2018, Price = 104.989998 }, Sell = { Date = 11/19/2018, Price = 108.269997 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/15/2018, Price = 104.989998 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/19/2018, Price = 108.269997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>3</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 11/20/2018, Price = 101.800003 }, Sell = { Date = 11/28/2018, Price = 107.889999 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/20/2018, Price = 101.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/28/2018, Price = 107.889999 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>4</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 12/6/2018, Price = 105.820000 }, Sell = { Date = 12/7/2018, Price = 108.379997 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/6/2018, Price = 105.820000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-06\">Dec 06, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.820000</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/7/2018, Price = 108.379997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-07\">Dec 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.379997</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>5</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 12/10/2018, Price = 104.800003 }, Sell = { Date = 12/11/2018, Price = 109.800003 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/10/2018, Price = 104.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-10\">Dec 10, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/11/2018, Price = 109.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-11\">Dec 11, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.800003</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>6</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 12/17/2018, Price = 105.410004 }, Sell = { Date = 1/8/2019, Price = 103.040001 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/17/2018, Price = 105.410004 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-17\">Dec 17, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.410004</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/8/2019, Price = 103.040001 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-01-08\">Jan 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.040001</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>7</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 1/31/2019, Price = 103.800003 }, Sell = { Date = 2/5/2019, Price = 106.059998 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/31/2019, Price = 103.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-01-31\">Jan 31, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/5/2019, Price = 106.059998 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-05\">Feb 05, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.059998</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>8</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 2/8/2019, Price = 104.389999 }, Sell = { Date = 2/11/2019, Price = 106.199997 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/8/2019, Price = 104.389999 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-08\">Feb 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.389999</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/11/2019, Price = 106.199997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-11\">Feb 11, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.199997</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>9</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 3/8/2019, Price = 109.160004 }, Sell = { Date = 3/11/2019, Price = 110.989998 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/8/2019, Price = 109.160004 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-03-08\">Mar 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.160004</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/11/2019, Price = 110.989998 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-03-11\">Mar 11, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>110.989998</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>10</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 5/9/2019, Price = 124.290001 }, Sell = { Date = 5/16/2019, Price = 126.750000 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/9/2019, Price = 124.290001 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-09\">May 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>124.290001</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/16/2019, Price = 126.750000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-16\">May 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.750000</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>11</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 5/20/2019, Price = 126.519997 }, Sell = { Date = 5/21/2019, Price = 127.430000 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/20/2019, Price = 126.519997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-20\">May 20, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.519997</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/21/2019, Price = 127.430000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-21\">May 21, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>127.430000</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>12</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 5/22/2019, Price = 126.620003 }, Sell = { Date = 5/24/2019, Price = 126.910004 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/22/2019, Price = 126.620003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-22\">May 22, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.620003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/24/2019, Price = 126.910004 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-24\">May 24, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.910004</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>13</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 5/29/2019, Price = 125.379997 }, Sell = { Date = 6/6/2019, Price = 126.440002 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/29/2019, Price = 125.379997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-29\">May 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>125.379997</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 6/6/2019, Price = 126.440002 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-06-06\">Jun 06, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.440002</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>14</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 7/18/2019, Price = 135.550003 }, Sell = { Date = 7/19/2019, Price = 140.220001 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/18/2019, Price = 135.550003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-07-18\">Jul 18, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>135.550003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/19/2019, Price = 140.220001 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-07-19\">Jul 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>140.220001</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>15</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 8/1/2019, Price = 137.000000 }, Sell = { Date = 8/9/2019, Price = 138.610001 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/1/2019, Price = 137.000000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-01\">Aug 01, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.000000</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/9/2019, Price = 138.610001 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-09\">Aug 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>138.610001</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>16</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 8/12/2019, Price = 137.070007 }, Sell = { Date = 8/19/2019, Price = 137.850006 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/12/2019, Price = 137.070007 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-12\">Aug 12, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.070007</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/19/2019, Price = 137.850006 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-19\">Aug 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>17</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 8/26/2019, Price = 134.990005 }, Sell = { Date = 8/29/2019, Price = 137.250000 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/26/2019, Price = 134.990005 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-26\">Aug 26, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>134.990005</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/29/2019, Price = 137.250000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-29\">Aug 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.250000</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>18</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 9/10/2019, Price = 136.800003 }, Sell = { Date = 9/12/2019, Price = 137.850006 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/10/2019, Price = 136.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-10\">Sep 10, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>136.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/12/2019, Price = 137.850006 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-12\">Sep 12, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>19</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 9/16/2019, Price = 135.830002 }, Sell = { Date = 9/19/2019, Price = 140.300003 } }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/16/2019, Price = 135.830002 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-16\">Sep 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>135.830002</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/19/2019, Price = 140.300003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-19\">Sep 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>140.300003</pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td colspan=\"2\"><i>... (more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var trades =\n",
" from b in batches\n",
" select b.Fold((buy, sell) => new\n",
" {\n",
" Buy = new { buy.Date, buy.Price },\n",
" Sell = new { sell.Date, sell.Price },\n",
" });\n",
"\n",
"trades"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Often times, there's more than one way to achieve the same result using various operators in LINQ and MoreLINQ. Instead of using `Batch` and `Fold`, we could have also used [`Pairwise`] with [`TakeEvery`]. `Pairwise` is just like `Window(2)`, but you get the two elements of a window as a couple (2-tuple) instead of a fixed-size array and then `TakeEvery(2)` has the effect of skipping every other pair such that the result is non-overlapping: \n",
"\n",
"[`Pairwise`]: https://morelinq.github.io/4.0/ref/api/html/M_MoreLinq_MoreEnumerable_Pairwise__2.htm\n",
"[`TakeEvery`]: https://morelinq.github.io/4.0/ref/api/html/M_MoreLinq_MoreEnumerable_TakeEvery__1.htm"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 10/26/2018, Price = 105.690002, Action = Buy }, { Date = 11/7/2018, Price = 109.440002, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/26/2018, Price = 105.690002, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/7/2018, Price = 109.440002, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 11/19/2018, Price = 108.269997, Action = Sell }, { Date = 11/20/2018, Price = 101.800003, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/19/2018, Price = 108.269997, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/20/2018, Price = 101.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 12/10/2018, Price = 104.800003, Action = Buy }, { Date = 12/11/2018, Price = 109.800003, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/10/2018, Price = 104.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-10\">Dec 10, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/11/2018, Price = 109.800003, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-11\">Dec 11, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.800003</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>3</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 2/5/2019, Price = 106.059998, Action = Sell }, { Date = 2/8/2019, Price = 104.389999, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/5/2019, Price = 106.059998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-05\">Feb 05, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.059998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/8/2019, Price = 104.389999, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-08\">Feb 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.389999</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>4</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 5/9/2019, Price = 124.290001, Action = Buy }, { Date = 5/16/2019, Price = 126.750000, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/9/2019, Price = 124.290001, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-09\">May 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>124.290001</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/16/2019, Price = 126.750000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-16\">May 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.750000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>5</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 5/24/2019, Price = 126.910004, Action = Sell }, { Date = 5/29/2019, Price = 125.379997, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/24/2019, Price = 126.910004, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-24\">May 24, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.910004</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/29/2019, Price = 125.379997, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-29\">May 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>125.379997</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>6</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 8/1/2019, Price = 137.000000, Action = Buy }, { Date = 8/9/2019, Price = 138.610001, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/1/2019, Price = 137.000000, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-01\">Aug 01, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.000000</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/9/2019, Price = 138.610001, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-09\">Aug 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>138.610001</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>7</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 8/29/2019, Price = 137.250000, Action = Sell }, { Date = 9/10/2019, Price = 136.800003, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/29/2019, Price = 137.250000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-29\">Aug 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.250000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/10/2019, Price = 136.800003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-10\">Sep 10, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>136.800003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>8</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 9/25/2019, Price = 137.500000, Action = Buy }, { Date = 9/26/2019, Price = 139.440002, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/25/2019, Price = 137.500000, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-25\">Sep 25, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.500000</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/26/2019, Price = 139.440002, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-26\">Sep 26, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>139.440002</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>9</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 10/10/2019, Price = 138.490005, Action = Sell }, { Date = 10/21/2019, Price = 138.449997, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/10/2019, Price = 138.490005, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-10-10\">Oct 10, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>138.490005</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/21/2019, Price = 138.449997, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-10-21\">Oct 21, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>138.449997</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>10</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 12/3/2019, Price = 147.490005, Action = Buy }, { Date = 12/4/2019, Price = 150.139999, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/3/2019, Price = 147.490005, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-12-03\">Dec 03, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>147.490005</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/4/2019, Price = 150.139999, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-12-04\">Dec 04, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>150.139999</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>11</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 3/27/2020, Price = 151.750000, Action = Sell }, { Date = 5/14/2020, Price = 177.539993, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/27/2020, Price = 151.750000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-03-27\">Mar 27, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>151.750000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/14/2020, Price = 177.539993, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-05-14\">May 14, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>177.539993</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>12</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 6/1/2020, Price = 182.539993, Action = Buy }, { Date = 6/2/2020, Price = 184.250000, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 6/1/2020, Price = 182.539993, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-06-01\">Jun 01, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>182.539993</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 6/2/2020, Price = 184.250000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-06-02\">Jun 02, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>184.250000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>13</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 6/16/2020, Price = 192.889999, Action = Sell }, { Date = 7/17/2020, Price = 204.470001, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 6/16/2020, Price = 192.889999, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-06-16\">Jun 16, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>192.889999</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/17/2020, Price = 204.470001, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-07-17\">Jul 17, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>204.470001</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>14</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 8/11/2020, Price = 207.160004, Action = Buy }, { Date = 8/13/2020, Price = 209.440002, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/11/2020, Price = 207.160004, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-08-11\">Aug 11, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>207.160004</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/13/2020, Price = 209.440002, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-08-13\">Aug 13, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>209.440002</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>15</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 10/1/2020, Price = 213.490005, Action = Sell }, { Date = 10/26/2020, Price = 213.850006, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/1/2020, Price = 213.490005, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-10-01\">Oct 01, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>213.490005</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/26/2020, Price = 213.850006, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-10-26\">Oct 26, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>213.850006</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>16</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 11/19/2020, Price = 211.380005, Action = Buy }, { Date = 11/25/2020, Price = 215.110001, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/19/2020, Price = 211.380005, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-11-19\">Nov 19, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>211.380005</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/25/2020, Price = 215.110001, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-11-25\">Nov 25, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>215.110001</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>17</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 12/15/2020, Price = 215.169998, Action = Sell }, { Date = 1/5/2021, Price = 217.259995, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/15/2020, Price = 215.169998, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2020-12-15\">Dec 15, 2020</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>215.169998</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/5/2021, Price = 217.259995, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2021-01-05\">Jan 05, 2021</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>217.259995</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>18</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 2/22/2021, Price = 237.419998, Action = Buy }, { Date = 3/10/2021, Price = 237.000000, Action = Sell })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/22/2021, Price = 237.419998, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2021-02-22\">Feb 22, 2021</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>237.419998</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/10/2021, Price = 237.000000, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2021-03-10\">Mar 10, 2021</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>237.000000</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td>19</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>({ Date = 3/23/2021, Price = 237.490005, Action = Sell }, { Date = 3/26/2021, Price = 231.550003, Action = Buy })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Item1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/23/2021, Price = 237.490005, Action = Sell }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2021-03-23\">Mar 23, 2021</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>237.490005</pre></div></td></tr><tr><td>Action</td><td><span>Sell</span></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/26/2021, Price = 231.550003, Action = Buy }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2021-03-26\">Mar 26, 2021</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>231.550003</pre></div></td></tr><tr><td>Action</td><td><span>Buy</span></td></tr></tbody></table></div></details></td></tr></tbody></table></div></details></td></tr><tr><td colspan=\"2\"><i>... (more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"actions.Pairwise(ValueTuple.Create).TakeEvery(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We have all the trade actions lined up, knowing when we bought and sold so the next step is to calculate the performance of our trading strategy over time. Let's begin with an initial balance of $1,000:"
]
},
{
"cell_type": "code",
"execution_count": 124,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [],
"source": [
"const decimal initialBalance = 1_000;"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"and see what we get at the end, but now comes the difficult part. As we go over `trades`, we'll be interested in keeping track of various pieces of information:\n",
"\n",
"- The buy/sell trade\n",
"- How many shares were bought on the buy date, with what was in the account?\n",
"- What was the remaining balance after buying whole shares?\n",
"- How many shares were sold on the sell date?\n",
"- How many days we were in the trade, between when we bought and sold the shares?\n",
"- What was the new balance based on the profit or loss?\n",
"\n",
"To do this, we will use [`Scan`] from MoreLINQ. `Scan` is like `Aggregate`, but while `Aggregate` gives you the final accumulated result, `Scan` produces a sequence of the accumulation as the source sequence is iterated, which is exactly what we need here. Like `Aggregate`, `Scan` needs a seed, an initial state, and a function that _folds_ an item in the source sequence into that state.\n",
"\n",
"Let's look at this in action:\n",
"\n",
"[`Scan`]: https://morelinq.github.io/4.0/ref/api/html/M_MoreLinq_MoreEnumerable_Scan__2.htm"
]
},
{
"cell_type": "code",
"execution_count": 125,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 10/26/2018, Price = 105.690002 }, Sell = { Date = 11/7/2018, Price = 109.440002 }, Account = 1000, Shares = 9, Bought = 951.210018, Remaining = 48.789982, Sold = 984.960018, Days = 13, Balance = 1033.750000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 10/26/2018, Price = 105.690002 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/7/2018, Price = 109.440002 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1000</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>951.210018</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>48.789982</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>984.960018</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>13</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 11/13/2018, Price = 107.550003 }, Sell = { Date = 11/14/2018, Price = 108.099998 }, Account = 1033.750000, Shares = 9, Bought = 967.950027, Remaining = 65.799973, Sold = 972.899982, Days = 2, Balance = 1038.699955 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/13/2018, Price = 107.550003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/14/2018, Price = 108.099998 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>967.950027</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>65.799973</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>972.899982</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 11/15/2018, Price = 104.989998 }, Sell = { Date = 11/19/2018, Price = 108.269997 }, Account = 1038.699955, Shares = 9, Bought = 944.909982, Remaining = 93.789973, Sold = 974.429973, Days = 5, Balance = 1068.219946 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/15/2018, Price = 104.989998 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/19/2018, Price = 108.269997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>944.909982</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>93.789973</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>974.429973</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>5</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>3</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 11/20/2018, Price = 101.800003 }, Sell = { Date = 11/28/2018, Price = 107.889999 }, Account = 1068.219946, Shares = 10, Bought = 1018.000030, Remaining = 50.219916, Sold = 1078.899990, Days = 9, Balance = 1129.119906 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/20/2018, Price = 101.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 11/28/2018, Price = 107.889999 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1018.000030</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>50.219916</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1078.899990</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>4</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 12/6/2018, Price = 105.820000 }, Sell = { Date = 12/7/2018, Price = 108.379997 }, Account = 1129.119906, Shares = 10, Bought = 1058.200000, Remaining = 70.919906, Sold = 1083.799970, Days = 2, Balance = 1154.719876 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/6/2018, Price = 105.820000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-06\">Dec 06, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.820000</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/7/2018, Price = 108.379997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-07\">Dec 07, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>108.379997</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1058.200000</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>70.919906</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1083.799970</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1154.719876</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>5</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 12/10/2018, Price = 104.800003 }, Sell = { Date = 12/11/2018, Price = 109.800003 }, Account = 1154.719876, Shares = 11, Bought = 1152.800033, Remaining = 1.919843, Sold = 1207.800033, Days = 2, Balance = 1209.719876 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/10/2018, Price = 104.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-10\">Dec 10, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/11/2018, Price = 109.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-11\">Dec 11, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1154.719876</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1152.800033</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>1.919843</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1207.800033</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1209.719876</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>6</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 12/17/2018, Price = 105.410004 }, Sell = { Date = 1/8/2019, Price = 103.040001 }, Account = 1209.719876, Shares = 11, Bought = 1159.510044, Remaining = 50.209832, Sold = 1133.440011, Days = 23, Balance = 1183.649843 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 12/17/2018, Price = 105.410004 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2018-12-17\">Dec 17, 2018</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>105.410004</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/8/2019, Price = 103.040001 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-01-08\">Jan 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.040001</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1209.719876</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1159.510044</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>50.209832</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1133.440011</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>23</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1183.649843</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>7</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 1/31/2019, Price = 103.800003 }, Sell = { Date = 2/5/2019, Price = 106.059998 }, Account = 1183.649843, Shares = 11, Bought = 1141.800033, Remaining = 41.849810, Sold = 1166.659978, Days = 6, Balance = 1208.509788 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 1/31/2019, Price = 103.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-01-31\">Jan 31, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>103.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/5/2019, Price = 106.059998 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-05\">Feb 05, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.059998</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1183.649843</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1141.800033</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>41.849810</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1166.659978</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>6</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1208.509788</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>8</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 2/8/2019, Price = 104.389999 }, Sell = { Date = 2/11/2019, Price = 106.199997 }, Account = 1208.509788, Shares = 11, Bought = 1148.289989, Remaining = 60.219799, Sold = 1168.199967, Days = 4, Balance = 1228.419766 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/8/2019, Price = 104.389999 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-08\">Feb 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>104.389999</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 2/11/2019, Price = 106.199997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-02-11\">Feb 11, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>106.199997</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1208.509788</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1148.289989</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>60.219799</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1168.199967</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>4</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1228.419766</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>9</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 3/8/2019, Price = 109.160004 }, Sell = { Date = 3/11/2019, Price = 110.989998 }, Account = 1228.419766, Shares = 11, Bought = 1200.760044, Remaining = 27.659722, Sold = 1220.889978, Days = 4, Balance = 1248.549700 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/8/2019, Price = 109.160004 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-03-08\">Mar 08, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>109.160004</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 3/11/2019, Price = 110.989998 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-03-11\">Mar 11, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>110.989998</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1228.419766</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1200.760044</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>27.659722</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1220.889978</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>4</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1248.549700</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>10</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 5/9/2019, Price = 124.290001 }, Sell = { Date = 5/16/2019, Price = 126.750000 }, Account = 1248.549700, Shares = 10, Bought = 1242.900010, Remaining = 5.649690, Sold = 1267.500000, Days = 8, Balance = 1273.149690 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/9/2019, Price = 124.290001 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-09\">May 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>124.290001</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/16/2019, Price = 126.750000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-16\">May 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.750000</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1248.549700</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1242.900010</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>5.649690</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1267.500000</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>8</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1273.149690</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>11</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 5/20/2019, Price = 126.519997 }, Sell = { Date = 5/21/2019, Price = 127.430000 }, Account = 1273.149690, Shares = 10, Bought = 1265.199970, Remaining = 7.949720, Sold = 1274.300000, Days = 2, Balance = 1282.249720 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/20/2019, Price = 126.519997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-20\">May 20, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.519997</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/21/2019, Price = 127.430000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-21\">May 21, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>127.430000</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1273.149690</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1265.199970</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>7.949720</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1274.300000</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1282.249720</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>12</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 5/22/2019, Price = 126.620003 }, Sell = { Date = 5/24/2019, Price = 126.910004 }, Account = 1282.249720, Shares = 10, Bought = 1266.200030, Remaining = 16.049690, Sold = 1269.100040, Days = 3, Balance = 1285.149730 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/22/2019, Price = 126.620003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-22\">May 22, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.620003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/24/2019, Price = 126.910004 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-24\">May 24, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.910004</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1282.249720</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1266.200030</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>16.049690</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1269.100040</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>3</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1285.149730</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>13</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 5/29/2019, Price = 125.379997 }, Sell = { Date = 6/6/2019, Price = 126.440002 }, Account = 1285.149730, Shares = 10, Bought = 1253.799970, Remaining = 31.349760, Sold = 1264.400020, Days = 9, Balance = 1295.749780 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 5/29/2019, Price = 125.379997 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-05-29\">May 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>125.379997</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 6/6/2019, Price = 126.440002 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-06-06\">Jun 06, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>126.440002</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1285.149730</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1253.799970</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>31.349760</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1264.400020</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1295.749780</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>14</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 7/18/2019, Price = 135.550003 }, Sell = { Date = 7/19/2019, Price = 140.220001 }, Account = 1295.749780, Shares = 9, Bought = 1219.950027, Remaining = 75.799753, Sold = 1261.980009, Days = 2, Balance = 1337.779762 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/18/2019, Price = 135.550003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-07-18\">Jul 18, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>135.550003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 7/19/2019, Price = 140.220001 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-07-19\">Jul 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>140.220001</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1295.749780</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1219.950027</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>75.799753</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1261.980009</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1337.779762</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>15</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 8/1/2019, Price = 137.000000 }, Sell = { Date = 8/9/2019, Price = 138.610001 }, Account = 1337.779762, Shares = 9, Bought = 1233.000000, Remaining = 104.779762, Sold = 1247.490009, Days = 9, Balance = 1352.269771 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/1/2019, Price = 137.000000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-01\">Aug 01, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.000000</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/9/2019, Price = 138.610001 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-09\">Aug 09, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>138.610001</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1337.779762</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1233.000000</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>104.779762</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1247.490009</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1352.269771</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>16</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 8/12/2019, Price = 137.070007 }, Sell = { Date = 8/19/2019, Price = 137.850006 }, Account = 1352.269771, Shares = 9, Bought = 1233.630063, Remaining = 118.639708, Sold = 1240.650054, Days = 8, Balance = 1359.289762 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/12/2019, Price = 137.070007 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-12\">Aug 12, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.070007</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/19/2019, Price = 137.850006 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-19\">Aug 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1352.269771</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1233.630063</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>118.639708</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1240.650054</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>8</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1359.289762</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>17</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 8/26/2019, Price = 134.990005 }, Sell = { Date = 8/29/2019, Price = 137.250000 }, Account = 1359.289762, Shares = 10, Bought = 1349.900050, Remaining = 9.389712, Sold = 1372.500000, Days = 4, Balance = 1381.889712 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/26/2019, Price = 134.990005 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-26\">Aug 26, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>134.990005</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 8/29/2019, Price = 137.250000 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-08-29\">Aug 29, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.250000</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1359.289762</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1349.900050</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>9.389712</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1372.500000</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>4</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1381.889712</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>18</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 9/10/2019, Price = 136.800003 }, Sell = { Date = 9/12/2019, Price = 137.850006 }, Account = 1381.889712, Shares = 10, Bought = 1368.000030, Remaining = 13.889682, Sold = 1378.500060, Days = 3, Balance = 1392.389742 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/10/2019, Price = 136.800003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-10\">Sep 10, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>136.800003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/12/2019, Price = 137.850006 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-12\">Sep 12, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1381.889712</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1368.000030</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>13.889682</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1378.500060</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>3</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1392.389742</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>19</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Buy = { Date = 9/16/2019, Price = 135.830002 }, Sell = { Date = 9/19/2019, Price = 140.300003 }, Account = 1392.389742, Shares = 10, Bought = 1358.300020, Remaining = 34.089722, Sold = 1403.000030, Days = 4, Balance = 1437.089752 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Buy</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/16/2019, Price = 135.830002 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-16\">Sep 16, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>135.830002</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Sell</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>{ Date = 9/19/2019, Price = 140.300003 }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Date</td><td><time datetime=\"2019-09-19\">Sep 19, 2019</time></td></tr><tr><td>Price</td><td><div class=\"dni-plaintext\"><pre>140.300003</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Account</td><td><div class=\"dni-plaintext\"><pre>1392.389742</pre></div></td></tr><tr><td>Shares</td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td></tr><tr><td>Bought</td><td><div class=\"dni-plaintext\"><pre>1358.300020</pre></div></td></tr><tr><td>Remaining</td><td><div class=\"dni-plaintext\"><pre>34.089722</pre></div></td></tr><tr><td>Sold</td><td><div class=\"dni-plaintext\"><pre>1403.000030</pre></div></td></tr><tr><td>Days</td><td><div class=\"dni-plaintext\"><pre>4</pre></div></td></tr><tr><td>Balance</td><td><div class=\"dni-plaintext\"><pre>1437.089752</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td colspan=\"2\"><i>... (more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var run =\n",
" trades.Scan(seed: new\n",
" { \n",
" Buy = new { Date = DateOnly.MinValue, Price = 0m },\n",
" Sell = new { Date = DateOnly.MinValue, Price = 0m },\n",
" Account = initialBalance,\n",
" Shares = 0,\n",
" Bought = 0m,\n",
" Remaining = 0m,\n",
" Sold = 0m,\n",
" Days = 0,\n",
" Balance = initialBalance\n",
" },\n",
" (s, t) =>\n",
" { \n",
" var shares = (int)(s.Balance / t.Buy.Price);\n",
" return new\n",
" {\n",
" t.Buy,\n",
" t.Sell,\n",
" Account = s.Balance,\n",
" Shares = shares,\n",
" Bought = shares * t.Buy.Price,\n",
" Remaining = s.Balance % t.Buy.Price,\n",
" Sold = shares * t.Sell.Price,\n",
" Days = 1 + t.Sell.Date.DayNumber - t.Buy.Date.DayNumber,\n",
" Balance = shares * t.Sell.Price + (s.Balance % t.Buy.Price)\n",
" };\n",
" })\n",
" .Skip(1); // the seed\n",
"\n",
"run\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The above may be a little hard to inspect so let's flatten the structure for a more tabular output via `ToTabularDataResource`:"
]
},
{
"cell_type": "code",
"execution_count": 126,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"BuyDate,BuyPrice,SellDate,SellPrice,Account,Shares,Bought,Remaining,Sold,Days,Profit,Balance\r\n",
"10/26/2018,105.690002,11/7/2018,109.440002,1000,9,951.210018,48.789982,984.960018,13,33.750000,1033.750000\r\n",
"11/13/2018,107.550003,11/14/2018,108.099998,1033.750000,9,967.950027,65.799973,972.899982,2,4.949955,1038.699955\r\n",
"11/15/2018,104.989998,11/19/2018,108.269997,1038.699955,9,944.909982,93.789973,974.429973,5,29.519991,1068.219946\r\n",
"11/20/2018,101.800003,11/28/2018,107.889999,1068.219946,10,1018.000030,50.219916,1078.899990,9,60.899960,1129.119906\r\n",
"12/6/2018,105.820000,12/7/2018,108.379997,1129.119906,10,1058.200000,70.919906,1083.799970,2,25.599970,1154.719876\r\n",
"12/10/2018,104.800003,12/11/2018,109.800003,1154.719876,11,1152.800033,1.919843,1207.800033,2,55.000000,1209.719876\r\n",
"12/17/2018,105.410004,1/8/2019,103.040001,1209.719876,11,1159.510044,50.209832,1133.440011,23,-26.070033,1183.649843\r\n",
"1/31/2019,103.800003,2/5/2019,106.059998,1183.649843,11,1141.800033,41.849810,1166.659978,6,24.859945,1208.509788\r\n",
"2/8/2019,104.389999,2/11/2019,106.199997,1208.509788,11,1148.289989,60.219799,1168.199967,4,19.909978,1228.419766\r\n",
"3/8/2019,109.160004,3/11/2019,110.989998,1228.419766,11,1200.760044,27.659722,1220.889978,4,20.129934,1248.549700\r\n",
"5/9/2019,124.290001,5/16/2019,126.750000,1248.549700,10,1242.900010,5.649690,1267.500000,8,24.599990,1273.149690\r\n",
"5/20/2019,126.519997,5/21/2019,127.430000,1273.149690,10,1265.199970,7.949720,1274.300000,2,9.100030,1282.249720\r\n",
"5/22/2019,126.620003,5/24/2019,126.910004,1282.249720,10,1266.200030,16.049690,1269.100040,3,2.900010,1285.149730\r\n",
"5/29/2019,125.379997,6/6/2019,126.440002,1285.149730,10,1253.799970,31.349760,1264.400020,9,10.600050,1295.749780\r\n",
"7/18/2019,135.550003,7/19/2019,140.220001,1295.749780,9,1219.950027,75.799753,1261.980009,2,42.029982,1337.779762\r\n",
"8/1/2019,137.000000,8/9/2019,138.610001,1337.779762,9,1233.000000,104.779762,1247.490009,9,14.490009,1352.269771\r\n",
"8/12/2019,137.070007,8/19/2019,137.850006,1352.269771,9,1233.630063,118.639708,1240.650054,8,7.019991,1359.289762\r\n",
"8/26/2019,134.990005,8/29/2019,137.250000,1359.289762,10,1349.900050,9.389712,1372.500000,4,22.599950,1381.889712\r\n",
"9/10/2019,136.800003,9/12/2019,137.850006,1381.889712,10,1368.000030,13.889682,1378.500060,3,10.500030,1392.389742\r\n",
"9/16/2019,135.830002,9/19/2019,140.300003,1392.389742,10,1358.300020,34.089722,1403.000030,4,44.700010,1437.089752\r\n",
"9/25/2019,137.500000,9/26/2019,139.440002,1437.089752,10,1375.000000,62.089752,1394.400020,2,19.400020,1456.489772\r\n",
"9/30/2019,138.050003,10/1/2019,139.660004,1456.489772,10,1380.500030,75.989742,1396.600040,2,16.100010,1472.589782\r\n",
"10/2/2019,136.250000,10/10/2019,138.490005,1472.589782,10,1362.500000,110.089782,1384.900050,9,22.400050,1494.989832\r\n",
"10/21/2019,138.449997,10/22/2019,138.970001,1494.989832,10,1384.499970,110.489862,1389.700010,2,5.200040,1500.189872\r\n",
"10/23/2019,136.880005,10/24/2019,139.389999,1500.189872,10,1368.800050,131.389822,1393.899990,2,25.099940,1525.289812\r\n",
"12/3/2019,147.490005,12/4/2019,150.139999,1525.289812,10,1474.900050,50.389762,1501.399990,2,26.499940,1551.789752\r\n",
"1/27/2020,161.149994,1/28/2020,163.779999,1551.789752,9,1450.349946,101.439806,1474.019991,2,23.670045,1575.459797\r\n",
"2/24/2020,167.770004,3/27/2020,151.750000,1575.459797,9,1509.930036,65.529761,1365.750000,33,-144.180036,1431.279761\r\n",
"5/14/2020,177.539993,5/15/2020,179.059998,1431.279761,8,1420.319944,10.959817,1432.479984,2,12.160040,1443.439801\r\n",
"5/27/2020,180.199997,5/29/2020,182.729996,1443.439801,8,1441.599976,1.839825,1461.839968,3,20.239992,1463.679793\r\n",
"6/1/2020,182.539993,6/2/2020,184.250000,1463.679793,8,1460.319944,3.359849,1474.000000,2,13.680056,1477.359849\r\n",
"6/5/2020,182.619995,6/8/2020,185.940002,1477.359849,8,1460.959960,16.399889,1487.520016,4,26.560056,1503.919905\r\n",
"6/15/2020,184.580002,6/16/2020,192.889999,1503.919905,8,1476.640016,27.279889,1543.119992,2,66.479976,1570.399881\r\n",
"7/17/2020,204.470001,7/21/2020,213.660004,1570.399881,7,1431.290007,139.109874,1495.620028,5,64.330021,1634.729902\r\n",
"7/24/2020,200.419998,8/3/2020,211.520004,1634.729902,8,1603.359984,31.369918,1692.160032,11,88.800048,1723.529950\r\n",
"8/11/2020,207.160004,8/13/2020,209.440002,1723.529950,8,1657.280032,66.249918,1675.520016,3,18.239984,1741.769934\r\n",
"9/4/2020,215.100006,9/28/2020,210.880005,1741.769934,8,1720.800048,20.969886,1687.040040,25,-33.760008,1708.009926\r\n",
"9/29/2020,209.350006,10/1/2020,213.490005,1708.009926,8,1674.800048,33.209878,1707.920040,3,33.119992,1741.129918\r\n",
"10/26/2020,213.850006,11/4/2020,214.020004,1741.129918,8,1710.800048,30.329870,1712.160032,10,1.359984,1742.489902\r\n",
"11/11/2020,212.389999,11/12/2020,217.210007,1742.489902,8,1699.119992,43.369910,1737.680056,2,38.560064,1781.049966\r\n",
"11/19/2020,211.380005,11/25/2020,215.110001,1781.049966,8,1691.040040,90.009926,1720.880008,7,29.839968,1810.889934\r\n",
"11/30/2020,214.100006,12/9/2020,215.160004,1810.889934,8,1712.800048,98.089886,1721.280032,10,8.479984,1819.369918\r\n",
"12/10/2020,211.770004,12/15/2020,215.169998,1819.369918,8,1694.160032,125.209886,1721.359984,6,27.199952,1846.569870\r\n",
"1/5/2021,217.259995,1/8/2021,218.679993,1846.569870,8,1738.079960,108.489910,1749.439944,4,11.359984,1857.929854\r\n",
"1/11/2021,218.470001,1/21/2021,224.699997,1857.929854,8,1747.760008,110.169846,1797.599976,11,49.839968,1907.769822\r\n",
"2/22/2021,237.419998,3/10/2021,237.000000,1907.769822,8,1899.359984,8.409838,1896.000000,17,-3.359984,1904.409838\r\n",
"3/11/2021,234.960007,3/16/2021,236.279999,1904.409838,8,1879.680056,24.729782,1890.239992,6,10.559936,1914.969774\r\n",
"3/18/2021,232.559998,3/23/2021,237.490005,1914.969774,8,1860.479984,54.489790,1899.920040,6,39.440056,1954.409830\r\n",
"3/26/2021,231.550003,3/29/2021,236.589996,1954.409830,8,1852.400024,102.009806,1892.719968,4,40.319944,1994.729774\r\n",
"3/30/2021,233.529999,4/1/2021,238.470001,1994.729774,8,1868.239992,126.489782,1907.760008,3,39.520016,2034.249790\r\n",
"4/30/2021,249.740005,5/25/2021,251.770004,2034.249790,8,1997.920040,36.329750,2014.160032,26,16.239992,2050.489782\r\n",
"6/3/2021,245.220001,6/4/2021,247.759995,2050.489782,8,1961.760008,88.729774,1982.079960,2,20.319952,2070.809734\r\n",
"9/10/2021,298.420013,9/15/2021,303.260010,2070.809734,6,1790.520078,280.289656,1819.560060,6,29.039982,2099.849716\r\n",
"9/20/2021,296.329987,10/7/2021,295.179993,2099.849716,7,2074.309909,25.539807,2066.259951,18,-8.049958,2091.799758\r\n",
"10/11/2021,292.920013,10/12/2021,295.339996,2091.799758,7,2050.440091,41.359667,2067.379972,2,16.939881,2108.739639\r\n",
"11/26/2021,334.350006,12/8/2021,335.309998,2108.739639,6,2006.100036,102.639603,2011.859988,13,5.759952,2114.499591\r\n",
"12/9/2021,334.410004,12/13/2021,340.679993,2114.499591,6,2006.460024,108.039567,2044.079958,5,37.619934,2152.119525\r\n",
"12/14/2021,333.220001,12/16/2021,335.709991,2152.119525,6,1999.320006,152.799519,2014.259946,3,14.939940,2167.059465\r\n",
"12/17/2021,320.880005,12/23/2021,332.750000,2167.059465,6,1925.280030,241.779435,1996.500000,7,71.219970,2238.279435\r\n",
"1/5/2022,325.859985,2/1/2022,310.410004,2238.279435,6,1955.159910,283.119525,1862.460024,28,-92.699886,2145.579549\r\n",
"2/4/2022,300.209991,2/9/2022,309.869995,2145.579549,7,2101.469937,44.109612,2169.089965,6,67.620028,2213.199577\r\n",
"2/10/2022,304.040009,3/3/2022,302.890015,2213.199577,7,2128.280063,84.919514,2120.230105,22,-8.049958,2205.149619\r\n",
"3/4/2022,294.290009,3/17/2022,293.290009,2205.149619,7,2060.030063,145.119556,2053.030063,14,-7.000000,2198.149619\r\n",
"4/7/2022,296.660004,5/5/2022,285.540009,2198.149619,7,2076.620028,121.529591,1998.780063,29,-77.839965,2120.309654\r\n",
"5/6/2022,274.809998,5/27/2022,268.480011,2120.309654,7,1923.669986,196.639668,1879.360077,22,-44.309909,2075.999745\r\n",
"6/2/2022,264.450012,6/3/2022,270.309998,2075.999745,7,1851.150084,224.849661,1892.169986,2,41.019902,2117.019647\r\n",
"6/10/2022,260.579987,6/24/2022,261.809998,2117.019647,8,2084.639896,32.379751,2094.479984,15,9.840088,2126.859735\r\n",
"6/29/2022,257.589996,7/6/2022,263.750000,2126.859735,8,2060.719968,66.139767,2110.000000,8,49.280032,2176.139767\r\n",
"7/13/2022,250.190002,7/18/2022,259.750000,2176.139767,8,2001.520016,174.619751,2078.000000,6,76.479984,2252.619751\r\n",
"7/19/2022,257.579987,7/20/2022,259.899994,2252.619751,8,2060.639896,191.979855,2079.199952,2,18.560056,2271.179807\r\n",
"8/23/2022,276.440002,10/5/2022,245.990005,2271.179807,8,2211.520016,59.659791,1967.920040,44,-243.599976,2027.579831\r\n",
"10/7/2022,240.899994,10/18/2022,243.240005,2027.579831,8,1927.199952,100.379879,1945.920040,12,18.720088,2046.299919\r\n",
"10/19/2022,237.039993,10/24/2022,243.759995,2046.299919,8,1896.319944,149.979975,1950.079960,6,53.760016,2100.059935\r\n",
"10/26/2022,231.169998,11/10/2022,235.429993,2100.059935,9,2080.529982,19.529953,2118.869937,16,38.339955,2138.399890\r\n",
"12/9/2022,244.699997,12/12/2022,247.449997,2138.399890,8,1957.599976,180.799914,1979.599976,4,22.000000,2160.399890\r\n",
"12/19/2022,244.860001,1/13/2023,237.000000,2160.399890,8,1958.880008,201.519882,1896.000000,26,-62.880008,2097.519882\r\n",
"1/19/2023,233.779999,1/23/2023,241.100006,2097.519882,8,1870.239992,227.279890,1928.800048,5,58.560056,2156.079938\r\n",
"1/25/2023,234.479996,1/26/2023,243.649994,2156.079938,9,2110.319964,45.759974,2192.849946,2,82.529982,2238.609920\r\n",
"2/21/2023,254.479996,3/14/2023,256.750000,2238.609920,8,2035.839968,202.769952,2054.000000,22,18.160032,2256.769952\r\n",
"4/24/2023,282.089996,4/26/2023,296.700012,2256.769952,8,2256.719968,0.049984,2373.600096,3,116.880128,2373.650080\r\n",
"6/27/2023,331.859985,6/28/2023,334.660004,2373.650080,7,2323.019895,50.630185,2342.620028,2,19.600133,2393.250213\r\n",
"7/10/2023,334.600006,7/12/2023,336.600006,2393.250213,7,2342.200042,51.050171,2356.200042,3,14.000000,2407.250213\r\n",
"7/26/2023,341.440002,8/24/2023,332.850006,2407.250213,7,2390.080014,17.170199,2329.950042,30,-60.129972,2347.120241\r\n",
"8/25/2023,321.470001,8/28/2023,325.660004,2347.120241,7,2250.290007,96.830234,2279.620028,4,29.330021,2376.450262\r\n",
"8/29/2023,321.880005,8/30/2023,328.670013,2376.450262,7,2253.160035,123.290227,2300.690091,2,47.530056,2423.980318\r\n"
],
"text/html": [
"<table><thead><tr><td><span>BuyDate</span></td><td><span>BuyPrice</span></td><td><span>SellDate</span></td><td><span>SellPrice</span></td><td><span>Account</span></td><td><span>Shares</span></td><td><span>Bought</span></td><td><span>Remaining</span></td><td><span>Sold</span></td><td><span>Days</span></td><td><span>Profit</span></td><td><span>Balance</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1000</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>951.210018</pre></div></td><td><div class=\"dni-plaintext\"><pre>48.789982</pre></div></td><td><div class=\"dni-plaintext\"><pre>984.960018</pre></div></td><td><div class=\"dni-plaintext\"><pre>13</pre></div></td><td><div class=\"dni-plaintext\"><pre>33.750000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>967.950027</pre></div></td><td><div class=\"dni-plaintext\"><pre>65.799973</pre></div></td><td><div class=\"dni-plaintext\"><pre>972.899982</pre></div></td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td><td><div class=\"dni-plaintext\"><pre>4.949955</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>944.909982</pre></div></td><td><div class=\"dni-plaintext\"><pre>93.789973</pre></div></td><td><div class=\"dni-plaintext\"><pre>974.429973</pre></div></td><td><div class=\"dni-plaintext\"><pre>5</pre></div></td><td><div class=\"dni-plaintext\"><pre>29.519991</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1018.000030</pre></div></td><td><div class=\"dni-plaintext\"><pre>50.219916</pre></div></td><td><div class=\"dni-plaintext\"><pre>1078.899990</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>60.899960</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-12-06\">Dec 06, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.820000</pre></div></td><td><time datetime=\"2018-12-07\">Dec 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.379997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1058.200000</pre></div></td><td><div class=\"dni-plaintext\"><pre>70.919906</pre></div></td><td><div class=\"dni-plaintext\"><pre>1083.799970</pre></div></td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td><td><div class=\"dni-plaintext\"><pre>25.599970</pre></div></td><td><div class=\"dni-plaintext\"><pre>1154.719876</pre></div></td></tr><tr><td><time datetime=\"2018-12-10\">Dec 10, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.800003</pre></div></td><td><time datetime=\"2018-12-11\">Dec 11, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1154.719876</pre></div></td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td><td><div class=\"dni-plaintext\"><pre>1152.800033</pre></div></td><td><div class=\"dni-plaintext\"><pre>1.919843</pre></div></td><td><div class=\"dni-plaintext\"><pre>1207.800033</pre></div></td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td><td><div class=\"dni-plaintext\"><pre>55.000000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1209.719876</pre></div></td></tr><tr><td><time datetime=\"2018-12-17\">Dec 17, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.410004</pre></div></td><td><time datetime=\"2019-01-08\">Jan 08, 2019</time></td><td><div class=\"dni-plaintext\"><pre>103.040001</pre></div></td><td><div class=\"dni-plaintext\"><pre>1209.719876</pre></div></td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td><td><div class=\"dni-plaintext\"><pre>1159.510044</pre></div></td><td><div class=\"dni-plaintext\"><pre>50.209832</pre></div></td><td><div class=\"dni-plaintext\"><pre>1133.440011</pre></div></td><td><div class=\"dni-plaintext\"><pre>23</pre></div></td><td><div class=\"dni-plaintext\"><pre>-26.070033</pre></div></td><td><div class=\"dni-plaintext\"><pre>1183.649843</pre></div></td></tr><tr><td><time datetime=\"2019-01-31\">Jan 31, 2019</time></td><td><div class=\"dni-plaintext\"><pre>103.800003</pre></div></td><td><time datetime=\"2019-02-05\">Feb 05, 2019</time></td><td><div class=\"dni-plaintext\"><pre>106.059998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1183.649843</pre></div></td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td><td><div class=\"dni-plaintext\"><pre>1141.800033</pre></div></td><td><div class=\"dni-plaintext\"><pre>41.849810</pre></div></td><td><div class=\"dni-plaintext\"><pre>1166.659978</pre></div></td><td><div class=\"dni-plaintext\"><pre>6</pre></div></td><td><div class=\"dni-plaintext\"><pre>24.859945</pre></div></td><td><div class=\"dni-plaintext\"><pre>1208.509788</pre></div></td></tr><tr><td><time datetime=\"2019-02-08\">Feb 08, 2019</time></td><td><div class=\"dni-plaintext\"><pre>104.389999</pre></div></td><td><time datetime=\"2019-02-11\">Feb 11, 2019</time></td><td><div class=\"dni-plaintext\"><pre>106.199997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1208.509788</pre></div></td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td><td><div class=\"dni-plaintext\"><pre>1148.289989</pre></div></td><td><div class=\"dni-plaintext\"><pre>60.219799</pre></div></td><td><div class=\"dni-plaintext\"><pre>1168.199967</pre></div></td><td><div class=\"dni-plaintext\"><pre>4</pre></div></td><td><div class=\"dni-plaintext\"><pre>19.909978</pre></div></td><td><div class=\"dni-plaintext\"><pre>1228.419766</pre></div></td></tr><tr><td><time datetime=\"2019-03-08\">Mar 08, 2019</time></td><td><div class=\"dni-plaintext\"><pre>109.160004</pre></div></td><td><time datetime=\"2019-03-11\">Mar 11, 2019</time></td><td><div class=\"dni-plaintext\"><pre>110.989998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1228.419766</pre></div></td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td><td><div class=\"dni-plaintext\"><pre>1200.760044</pre></div></td><td><div class=\"dni-plaintext\"><pre>27.659722</pre></div></td><td><div class=\"dni-plaintext\"><pre>1220.889978</pre></div></td><td><div class=\"dni-plaintext\"><pre>4</pre></div></td><td><div class=\"dni-plaintext\"><pre>20.129934</pre></div></td><td><div class=\"dni-plaintext\"><pre>1248.549700</pre></div></td></tr><tr><td><time datetime=\"2019-05-09\">May 09, 2019</time></td><td><div class=\"dni-plaintext\"><pre>124.290001</pre></div></td><td><time datetime=\"2019-05-16\">May 16, 2019</time></td><td><div class=\"dni-plaintext\"><pre>126.750000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1248.549700</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1242.900010</pre></div></td><td><div class=\"dni-plaintext\"><pre>5.649690</pre></div></td><td><div class=\"dni-plaintext\"><pre>1267.500000</pre></div></td><td><div class=\"dni-plaintext\"><pre>8</pre></div></td><td><div class=\"dni-plaintext\"><pre>24.599990</pre></div></td><td><div class=\"dni-plaintext\"><pre>1273.149690</pre></div></td></tr><tr><td><time datetime=\"2019-05-20\">May 20, 2019</time></td><td><div class=\"dni-plaintext\"><pre>126.519997</pre></div></td><td><time datetime=\"2019-05-21\">May 21, 2019</time></td><td><div class=\"dni-plaintext\"><pre>127.430000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1273.149690</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1265.199970</pre></div></td><td><div class=\"dni-plaintext\"><pre>7.949720</pre></div></td><td><div class=\"dni-plaintext\"><pre>1274.300000</pre></div></td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td><td><div class=\"dni-plaintext\"><pre>9.100030</pre></div></td><td><div class=\"dni-plaintext\"><pre>1282.249720</pre></div></td></tr><tr><td><time datetime=\"2019-05-22\">May 22, 2019</time></td><td><div class=\"dni-plaintext\"><pre>126.620003</pre></div></td><td><time datetime=\"2019-05-24\">May 24, 2019</time></td><td><div class=\"dni-plaintext\"><pre>126.910004</pre></div></td><td><div class=\"dni-plaintext\"><pre>1282.249720</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1266.200030</pre></div></td><td><div class=\"dni-plaintext\"><pre>16.049690</pre></div></td><td><div class=\"dni-plaintext\"><pre>1269.100040</pre></div></td><td><div class=\"dni-plaintext\"><pre>3</pre></div></td><td><div class=\"dni-plaintext\"><pre>2.900010</pre></div></td><td><div class=\"dni-plaintext\"><pre>1285.149730</pre></div></td></tr><tr><td><time datetime=\"2019-05-29\">May 29, 2019</time></td><td><div class=\"dni-plaintext\"><pre>125.379997</pre></div></td><td><time datetime=\"2019-06-06\">Jun 06, 2019</time></td><td><div class=\"dni-plaintext\"><pre>126.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1285.149730</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1253.799970</pre></div></td><td><div class=\"dni-plaintext\"><pre>31.349760</pre></div></td><td><div class=\"dni-plaintext\"><pre>1264.400020</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>10.600050</pre></div></td><td><div class=\"dni-plaintext\"><pre>1295.749780</pre></div></td></tr><tr><td><time datetime=\"2019-07-18\">Jul 18, 2019</time></td><td><div class=\"dni-plaintext\"><pre>135.550003</pre></div></td><td><time datetime=\"2019-07-19\">Jul 19, 2019</time></td><td><div class=\"dni-plaintext\"><pre>140.220001</pre></div></td><td><div class=\"dni-plaintext\"><pre>1295.749780</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>1219.950027</pre></div></td><td><div class=\"dni-plaintext\"><pre>75.799753</pre></div></td><td><div class=\"dni-plaintext\"><pre>1261.980009</pre></div></td><td><div class=\"dni-plaintext\"><pre>2</pre></div></td><td><div class=\"dni-plaintext\"><pre>42.029982</pre></div></td><td><div class=\"dni-plaintext\"><pre>1337.779762</pre></div></td></tr><tr><td><time datetime=\"2019-08-01\">Aug 01, 2019</time></td><td><div class=\"dni-plaintext\"><pre>137.000000</pre></div></td><td><time datetime=\"2019-08-09\">Aug 09, 2019</time></td><td><div class=\"dni-plaintext\"><pre>138.610001</pre></div></td><td><div class=\"dni-plaintext\"><pre>1337.779762</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>1233.000000</pre></div></td><td><div class=\"dni-plaintext\"><pre>104.779762</pre></div></td><td><div class=\"dni-plaintext\"><pre>1247.490009</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>14.490009</pre></div></td><td><div class=\"dni-plaintext\"><pre>1352.269771</pre></div></td></tr><tr><td><time datetime=\"2019-08-12\">Aug 12, 2019</time></td><td><div class=\"dni-plaintext\"><pre>137.070007</pre></div></td><td><time datetime=\"2019-08-19\">Aug 19, 2019</time></td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td><td><div class=\"dni-plaintext\"><pre>1352.269771</pre></div></td><td><div class=\"dni-plaintext\"><pre>9</pre></div></td><td><div class=\"dni-plaintext\"><pre>1233.630063</pre></div></td><td><div class=\"dni-plaintext\"><pre>118.639708</pre></div></td><td><div class=\"dni-plaintext\"><pre>1240.650054</pre></div></td><td><div class=\"dni-plaintext\"><pre>8</pre></div></td><td><div class=\"dni-plaintext\"><pre>7.019991</pre></div></td><td><div class=\"dni-plaintext\"><pre>1359.289762</pre></div></td></tr><tr><td><time datetime=\"2019-08-26\">Aug 26, 2019</time></td><td><div class=\"dni-plaintext\"><pre>134.990005</pre></div></td><td><time datetime=\"2019-08-29\">Aug 29, 2019</time></td><td><div class=\"dni-plaintext\"><pre>137.250000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1359.289762</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1349.900050</pre></div></td><td><div class=\"dni-plaintext\"><pre>9.389712</pre></div></td><td><div class=\"dni-plaintext\"><pre>1372.500000</pre></div></td><td><div class=\"dni-plaintext\"><pre>4</pre></div></td><td><div class=\"dni-plaintext\"><pre>22.599950</pre></div></td><td><div class=\"dni-plaintext\"><pre>1381.889712</pre></div></td></tr><tr><td><time datetime=\"2019-09-10\">Sep 10, 2019</time></td><td><div class=\"dni-plaintext\"><pre>136.800003</pre></div></td><td><time datetime=\"2019-09-12\">Sep 12, 2019</time></td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td><td><div class=\"dni-plaintext\"><pre>1381.889712</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1368.000030</pre></div></td><td><div class=\"dni-plaintext\"><pre>13.889682</pre></div></td><td><div class=\"dni-plaintext\"><pre>1378.500060</pre></div></td><td><div class=\"dni-plaintext\"><pre>3</pre></div></td><td><div class=\"dni-plaintext\"><pre>10.500030</pre></div></td><td><div class=\"dni-plaintext\"><pre>1392.389742</pre></div></td></tr><tr><td><time datetime=\"2019-09-16\">Sep 16, 2019</time></td><td><div class=\"dni-plaintext\"><pre>135.830002</pre></div></td><td><time datetime=\"2019-09-19\">Sep 19, 2019</time></td><td><div class=\"dni-plaintext\"><pre>140.300003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1392.389742</pre></div></td><td><div class=\"dni-plaintext\"><pre>10</pre></div></td><td><div class=\"dni-plaintext\"><pre>1358.300020</pre></div></td><td><div class=\"dni-plaintext\"><pre>34.089722</pre></div></td><td><div class=\"dni-plaintext\"><pre>1403.000030</pre></div></td><td><div class=\"dni-plaintext\"><pre>4</pre></div></td><td><div class=\"dni-plaintext\"><pre>44.700010</pre></div></td><td><div class=\"dni-plaintext\"><pre>1437.089752</pre></div></td></tr><tr><td colspan=\"12\"><i>(65 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var table =\n",
" from e in run\n",
" select new\n",
" {\n",
" BuyDate = e.Buy.Date,\n",
" BuyPrice = e.Buy.Price,\n",
" SellDate = e.Sell.Date,\n",
" SellPrice = e.Sell.Price,\n",
" e.Account,\n",
" e.Shares,\n",
" e.Bought,\n",
" e.Remaining,\n",
" e.Sold,\n",
" e.Days,\n",
" Profit = e.Balance - e.Account,\n",
" e.Balance, \n",
" };\n",
"\n",
"table.ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's better!\n",
"\n",
"The classical way to write to more or less get the same outcome without `Scan` would have been to restore to a classical `for` loop:"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Buy Date / Price | Sell Date / Price | Account | Shares | Bought | Remaining | Sold | Days | Balance\n",
"------------------------|-------------------------|----------|--------|------------|------------|------------|------|-----------\n",
"Oct 26, 2018 / 105.69 | Nov 07, 2018 / 109.44 | 1,033.75 | 9 | 951.21 | 82.54 | 984.96 | 13 | 1,033.75\n",
"Nov 13, 2018 / 107.55 | Nov 14, 2018 / 108.10 | 1,038.70 | 9 | 967.95 | 70.75 | 972.90 | 2 | 1,038.70\n",
"Nov 15, 2018 / 104.99 | Nov 19, 2018 / 108.27 | 1,068.22 | 9 | 944.91 | 18.32 | 974.43 | 5 | 1,068.22\n",
"Nov 20, 2018 / 101.80 | Nov 28, 2018 / 107.89 | 1,129.12 | 10 | 1,018.00 | 9.32 | 1,078.90 | 9 | 1,129.12\n",
"Dec 06, 2018 / 105.82 | Dec 07, 2018 / 108.38 | 1,154.72 | 10 | 1,058.20 | 96.52 | 1,083.80 | 2 | 1,154.72\n",
"Dec 10, 2018 / 104.80 | Dec 11, 2018 / 109.80 | 1,209.72 | 11 | 1,152.80 | 56.92 | 1,207.80 | 2 | 1,209.72\n",
"Dec 17, 2018 / 105.41 | Jan 08, 2019 / 103.04 | 1,183.65 | 11 | 1,159.51 | 24.14 | 1,133.44 | 23 | 1,183.65\n",
"Jan 31, 2019 / 103.80 | Feb 05, 2019 / 106.06 | 1,208.51 | 11 | 1,141.80 | 66.71 | 1,166.66 | 6 | 1,208.51\n",
"Feb 08, 2019 / 104.39 | Feb 11, 2019 / 106.20 | 1,228.42 | 11 | 1,148.29 | 80.13 | 1,168.20 | 4 | 1,228.42\n",
"Mar 08, 2019 / 109.16 | Mar 11, 2019 / 110.99 | 1,248.55 | 11 | 1,200.76 | 47.79 | 1,220.89 | 4 | 1,248.55\n",
"May 09, 2019 / 124.29 | May 16, 2019 / 126.75 | 1,273.15 | 10 | 1,242.90 | 30.25 | 1,267.50 | 8 | 1,273.15\n",
"May 20, 2019 / 126.52 | May 21, 2019 / 127.43 | 1,282.25 | 10 | 1,265.20 | 17.05 | 1,274.30 | 2 | 1,282.25\n",
"May 22, 2019 / 126.62 | May 24, 2019 / 126.91 | 1,285.15 | 10 | 1,266.20 | 18.95 | 1,269.10 | 3 | 1,285.15\n",
"May 29, 2019 / 125.38 | Jun 06, 2019 / 126.44 | 1,295.75 | 10 | 1,253.80 | 41.95 | 1,264.40 | 9 | 1,295.75\n",
"Jul 18, 2019 / 135.55 | Jul 19, 2019 / 140.22 | 1,337.78 | 9 | 1,219.95 | 117.83 | 1,261.98 | 2 | 1,337.78\n",
"Aug 01, 2019 / 137.00 | Aug 09, 2019 / 138.61 | 1,352.27 | 9 | 1,233.00 | 119.27 | 1,247.49 | 9 | 1,352.27\n",
"Aug 12, 2019 / 137.07 | Aug 19, 2019 / 137.85 | 1,359.29 | 9 | 1,233.63 | 125.66 | 1,240.65 | 8 | 1,359.29\n",
"Aug 26, 2019 / 134.99 | Aug 29, 2019 / 137.25 | 1,381.89 | 10 | 1,349.90 | 31.99 | 1,372.50 | 4 | 1,381.89\n",
"Sep 10, 2019 / 136.80 | Sep 12, 2019 / 137.85 | 1,392.39 | 10 | 1,368.00 | 24.39 | 1,378.50 | 3 | 1,392.39\n",
"Sep 16, 2019 / 135.83 | Sep 19, 2019 / 140.30 | 1,437.09 | 10 | 1,358.30 | 78.79 | 1,403.00 | 4 | 1,437.09\n"
]
}
],
"source": [
"var balance = initialBalance;\n",
"\n",
"Console.WriteLine(\"Buy Date / Price | Sell Date / Price | Account | Shares | Bought | Remaining | Sold | Days | Balance\");\n",
"Console.WriteLine(\"------------------------|-------------------------|----------|--------|------------|------------|------------|------|-----------\");\n",
"\n",
"foreach (var t in trades.Take(20))\n",
"{\n",
" var shares = (int)(balance / t.Buy.Price);\n",
" var newBalance = balance = shares * t.Sell.Price + (balance % t.Buy.Price);\n",
" Console.WriteLine(@$\"{t.Buy.Date:MMM dd, yyyy} / {t.Buy.Price,8:N2} | \" +\n",
" @$\"{t.Sell.Date:MMM dd, yyyy} / {t.Sell.Price,8:N2} | \" +\n",
" @$\"{balance:N2} | {shares,6} | {shares * t.Buy.Price,10:N2} | {balance % t.Buy.Price,10:N2} | \" +\n",
" @$\"{shares * t.Sell.Price,10:N2} | {1 + t.Sell.Date.DayNumber - t.Buy.Date.DayNumber,4} | {newBalance,10:N2}\");\n",
" balance = newBalance;\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, `Scan` is more powerful, especially when you want to continue to build on top of its result by composing additional operators from LINQ or MoreLINQ. With a `for` loop, you end up breaking the flow, having to build a list to continue any further processing you might still need.\n",
"\n",
"Enough with the tables and streams of data dumps so just for kicks and something more visual, let's use [ScottPlot] to plot the stock price along with the moving average and then add bars to show when we sold and what the portfolio balance was on the day:\n",
"\n",
"[ScottPlot]: https://scottplot.net/"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div><div></div><div></div><div><strong>Installed Packages</strong><ul><li><span>ScottPlot, 4.1.69</span></li></ul></div></div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\"></img>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#r \"nuget:ScottPlot, 4.1.69\"\n",
"\n",
"using System.Drawing;\n",
"using System.Runtime.InteropServices;\n",
"using ScottPlot;\n",
"\n",
"// Convenience extension method to convert `DateOnly` to `OADate`:\n",
"public static double ToOADate(this DateOnly date) => date.ToDateTime(default, DateTimeKind.Utc).ToOADate();\n",
"\n",
"var isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);\n",
"if (isWindows)\n",
"{\n",
" Formatter.Register(typeof(Plot), (p, w) => \n",
" w.Write(((Plot)p).GetImageHtml()), HtmlFormatter.MimeType);\n",
"\n",
" var plot = new Plot(1000, 400);\n",
" plot.XAxis.DateTimeFormat(true);\n",
" plot.YAxis.Label(\"Price\");\n",
" plot.YAxis2.Label(\"Balance\");\n",
" plot.YAxis2.Ticks(true);\n",
"\n",
" plot.AddScatter(data.Select(e => e.Date.ToOADate()).ToArray(),\n",
" data.Select(e => (double)e.Price).ToArray(),\n",
" markerShape: MarkerShape.none);\n",
"\n",
" plot.AddScatter(mavg.Select(e => e.Date.ToOADate()).ToArray(),\n",
" mavg.Select(e => (double)e.Avg).ToArray(),\n",
" markerShape: MarkerShape.none);\n",
"\n",
" plot.AddBar(run.Select(e => (double)e.Balance).ToArray(),\n",
" run.Select(e => e.Sell.Date.ToOADate()).ToArray())\n",
" .YAxisIndex = 1;\n",
"\n",
" plot.Display();\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's go back to the original trade data we have in `data` and connect the results from our strategy run in `run` so we can see the latter as a continiuous (as opposed to a discrete) time series. To connect the two, we will use [`OrderedMerge`] from MoreLINQ next. As the name implies, `OrderedMerge` *merges* or combines two source sequences into one and both sources are assumed to be sorted, or *ordered* by a common and unique key (otherwise there won't be any error but the result is undefined). `OrderedMerge` is like a [full outer join], but it's a lot more efficient in terms of memory because it can operate without materializing either of the sequence thanks precisely to the assumption that the sequence keys are ordered. It's quite common for time series data to be generally ordered by time and so it fits naturally with the requirements of `OrderedMerge`.\n",
"\n",
"[`OrderedMerge`]: https://morelinq.github.io/4.0/ref/api/html/Overload_MoreLinq_MoreEnumerable_OrderedMerge.htm\n",
"[full outer join]: https://en.wikipedia.org/wiki/Join_(SQL)#Full_outer_join"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price,Balance\r\n",
"10/1/2018,114.750000,\r\n",
"10/2/2018,115.300003,\r\n",
"10/3/2018,115.419998,\r\n",
"10/4/2018,114.610001,\r\n",
"10/5/2018,112.629997,\r\n",
"10/8/2018,111.660004,\r\n",
"10/9/2018,111.139999,\r\n",
"10/10/2018,111.239998,\r\n",
"10/11/2018,105.349998,\r\n",
"10/12/2018,109.010002,\r\n",
"10/15/2018,108.910004,\r\n",
"10/16/2018,109.540001,\r\n",
"10/17/2018,111.680000,\r\n",
"10/18/2018,110.099998,\r\n",
"10/19/2018,108.930000,\r\n",
"10/22/2018,109.320000,\r\n",
"10/23/2018,107.769997,\r\n",
"10/24/2018,108.410004,\r\n",
"10/25/2018,106.550003,\r\n",
"10/26/2018,105.690002,\r\n",
"10/29/2018,108.110001,\r\n",
"10/30/2018,103.660004,\r\n",
"10/31/2018,105.440002,\r\n",
"11/1/2018,107.050003,\r\n",
"11/2/2018,106.480003,\r\n",
"11/5/2018,106.370003,\r\n",
"11/6/2018,107.379997,\r\n",
"11/7/2018,109.440002,1033.750000\r\n",
"11/8/2018,111.800003,\r\n",
"11/9/2018,110.849998,\r\n",
"11/12/2018,109.419998,\r\n",
"11/13/2018,107.550003,\r\n",
"11/14/2018,108.099998,1038.699955\r\n",
"11/15/2018,104.989998,\r\n",
"11/16/2018,107.080002,\r\n",
"11/19/2018,108.269997,1068.219946\r\n",
"11/20/2018,101.800003,\r\n",
"11/21/2018,103.599998,\r\n",
"11/23/2018,102.169998,\r\n",
"11/26/2018,104.790001,\r\n",
"11/27/2018,106.269997,\r\n",
"11/28/2018,107.889999,1129.119906\r\n",
"11/29/2018,110.330002,\r\n",
"11/30/2018,110.699997,\r\n",
"12/3/2018,113.000000,\r\n",
"12/4/2018,111.940002,\r\n",
"12/6/2018,105.820000,\r\n",
"12/7/2018,108.379997,1154.719876\r\n",
"12/10/2018,104.800003,\r\n",
"12/11/2018,109.800003,1209.719876\r\n",
"12/12/2018,110.889999,\r\n",
"12/13/2018,109.580002,\r\n",
"12/14/2018,108.250000,\r\n",
"12/17/2018,105.410004,\r\n",
"12/18/2018,103.750000,\r\n",
"12/19/2018,103.650002,\r\n",
"12/20/2018,103.050003,\r\n",
"12/21/2018,101.629997,\r\n",
"12/24/2018,97.680000,\r\n",
"12/26/2018,95.139999,\r\n",
"12/27/2018,99.300003,\r\n",
"12/28/2018,102.089996,\r\n",
"12/31/2018,101.290001,\r\n",
"1/2/2019,99.550003,\r\n",
"1/3/2019,100.099998,\r\n",
"1/4/2019,99.720001,\r\n",
"1/7/2019,101.639999,\r\n",
"1/8/2019,103.040001,1183.649843\r\n",
"1/9/2019,103.860001,\r\n",
"1/10/2019,103.220001,\r\n",
"1/11/2019,103.190002,\r\n",
"1/14/2019,101.900002,\r\n",
"1/15/2019,102.510002,\r\n",
"1/16/2019,105.260002,\r\n",
"1/17/2019,105.000000,\r\n",
"1/18/2019,107.459999,\r\n",
"1/22/2019,106.750000,\r\n",
"1/23/2019,106.120003,\r\n",
"1/24/2019,106.860001,\r\n",
"1/25/2019,107.239998,\r\n",
"1/28/2019,106.260002,\r\n",
"1/29/2019,104.879997,\r\n",
"1/30/2019,104.620003,\r\n",
"1/31/2019,103.800003,\r\n",
"2/1/2019,103.779999,\r\n",
"2/4/2019,102.870003,\r\n",
"2/5/2019,106.059998,1208.509788\r\n",
"2/6/2019,107.000000,\r\n",
"2/7/2019,105.190002,\r\n",
"2/8/2019,104.389999,\r\n",
"2/11/2019,106.199997,1228.419766\r\n",
"2/12/2019,106.139999,\r\n",
"2/13/2019,107.500000,\r\n",
"2/14/2019,106.309998,\r\n",
"2/15/2019,107.910004,\r\n",
"2/19/2019,107.790001,\r\n",
"2/20/2019,107.860001,\r\n",
"2/21/2019,106.900002,\r\n",
"2/22/2019,110.050003,\r\n",
"2/25/2019,111.760002,\r\n",
"2/26/2019,111.260002,\r\n",
"2/27/2019,111.690002,\r\n",
"2/28/2019,112.040001,\r\n",
"3/1/2019,112.889999,\r\n",
"3/4/2019,113.019997,\r\n",
"3/5/2019,112.250000,\r\n",
"3/6/2019,111.870003,\r\n",
"3/7/2019,111.400002,\r\n",
"3/8/2019,109.160004,\r\n",
"3/11/2019,110.989998,1248.549700\r\n",
"3/12/2019,112.820000,\r\n",
"3/13/2019,114.129997,\r\n",
"3/14/2019,114.540001,\r\n",
"3/15/2019,115.339996,\r\n",
"3/18/2019,116.169998,\r\n",
"3/19/2019,118.089996,\r\n",
"3/20/2019,117.389999,\r\n",
"3/21/2019,117.139999,\r\n",
"3/22/2019,119.500000,\r\n",
"3/25/2019,116.559998,\r\n",
"3/26/2019,118.620003,\r\n",
"3/27/2019,117.879997,\r\n",
"3/28/2019,117.440002,\r\n",
"3/29/2019,118.070000,\r\n",
"4/1/2019,118.949997,\r\n",
"4/2/2019,119.059998,\r\n",
"4/3/2019,119.860001,\r\n",
"4/4/2019,120.099998,\r\n",
"4/5/2019,119.389999,\r\n",
"4/8/2019,119.809998,\r\n",
"4/9/2019,118.629997,\r\n",
"4/10/2019,119.760002,\r\n",
"4/11/2019,120.540001,\r\n",
"4/12/2019,120.639999,\r\n",
"4/15/2019,120.940002,\r\n",
"4/16/2019,121.639999,\r\n",
"4/17/2019,121.239998,\r\n",
"4/18/2019,122.190002,\r\n",
"4/22/2019,122.620003,\r\n",
"4/23/2019,124.099998,\r\n",
"4/24/2019,125.790001,\r\n",
"4/25/2019,130.059998,\r\n",
"4/26/2019,129.699997,\r\n",
"4/29/2019,129.899994,\r\n",
"4/30/2019,129.809998,\r\n",
"5/1/2019,130.529999,\r\n",
"5/2/2019,127.980003,\r\n",
"5/3/2019,127.360001,\r\n",
"5/6/2019,126.389999,\r\n",
"5/7/2019,126.459999,\r\n",
"5/8/2019,125.440002,\r\n",
"5/9/2019,124.290001,\r\n",
"5/10/2019,124.910004,\r\n",
"5/13/2019,124.110001,\r\n",
"5/14/2019,123.870003,\r\n",
"5/15/2019,124.260002,\r\n",
"5/16/2019,126.750000,1273.149690\r\n",
"5/17/2019,128.309998,\r\n",
"5/20/2019,126.519997,\r\n",
"5/21/2019,127.430000,1282.249720\r\n",
"5/22/2019,126.620003,\r\n",
"5/23/2019,126.199997,\r\n",
"5/24/2019,126.910004,1285.149730\r\n",
"5/28/2019,126.980003,\r\n",
"5/29/2019,125.379997,\r\n",
"5/30/2019,125.260002,\r\n",
"5/31/2019,124.230003,\r\n",
"6/3/2019,123.849998,\r\n",
"6/4/2019,121.279999,\r\n",
"6/5/2019,124.949997,\r\n",
"6/6/2019,126.440002,1295.749780\r\n",
"6/7/2019,129.190002,\r\n",
"6/10/2019,132.399994,\r\n",
"6/11/2019,133.880005,\r\n",
"6/12/2019,131.399994,\r\n",
"6/13/2019,131.979996,\r\n",
"6/14/2019,132.259995,\r\n",
"6/17/2019,132.630005,\r\n",
"6/18/2019,134.190002,\r\n",
"6/19/2019,135.000000,\r\n",
"6/20/2019,137.449997,\r\n",
"6/21/2019,136.580002,\r\n",
"6/24/2019,137.000000,\r\n",
"6/25/2019,137.250000,\r\n",
"6/26/2019,134.350006,\r\n",
"6/27/2019,134.139999,\r\n",
"6/28/2019,134.570007,\r\n",
"7/1/2019,136.630005,\r\n",
"7/2/2019,136.119995,\r\n",
"7/3/2019,136.800003,\r\n",
"7/5/2019,135.940002,\r\n",
"7/8/2019,136.399994,\r\n",
"7/9/2019,136.000000,\r\n",
"7/10/2019,137.130005,\r\n",
"7/11/2019,138.199997,\r\n",
"7/12/2019,138.850006,\r\n",
"7/15/2019,139.440002,\r\n",
"7/16/2019,138.960007,\r\n",
"7/17/2019,137.699997,\r\n",
"7/18/2019,135.550003,\r\n",
"7/19/2019,140.220001,1337.779762\r\n",
"7/22/2019,137.410004,\r\n",
"7/23/2019,139.759995,\r\n",
"7/24/2019,138.899994,\r\n",
"7/25/2019,140.429993,\r\n",
"7/26/2019,140.369995,\r\n",
"7/29/2019,141.500000,\r\n",
"7/30/2019,140.139999,\r\n",
"7/31/2019,140.330002,\r\n",
"8/1/2019,137.000000,\r\n",
"8/2/2019,138.089996,\r\n",
"8/5/2019,133.300003,\r\n",
"8/6/2019,133.800003,\r\n",
"8/7/2019,133.789993,\r\n",
"8/8/2019,136.600006,\r\n",
"8/9/2019,138.610001,1352.269771\r\n",
"8/12/2019,137.070007,\r\n",
"8/13/2019,136.050003,\r\n",
"8/14/2019,136.360001,\r\n",
"8/15/2019,134.389999,\r\n",
"8/16/2019,134.880005,\r\n",
"8/19/2019,137.850006,1359.289762\r\n",
"8/20/2019,138.210007,\r\n",
"8/21/2019,138.550003,\r\n",
"8/22/2019,138.660004,\r\n",
"8/23/2019,137.190002,\r\n",
"8/26/2019,134.990005,\r\n",
"8/27/2019,136.389999,\r\n",
"8/28/2019,134.880005,\r\n",
"8/29/2019,137.250000,1381.889712\r\n",
"8/30/2019,139.149994,\r\n",
"9/3/2019,136.610001,\r\n",
"9/4/2019,137.300003,\r\n",
"9/5/2019,139.110001,\r\n",
"9/6/2019,140.029999,\r\n",
"9/9/2019,139.589996,\r\n",
"9/10/2019,136.800003,\r\n",
"9/11/2019,135.910004,\r\n",
"9/12/2019,137.850006,1392.389742\r\n",
"9/13/2019,137.779999,\r\n",
"9/16/2019,135.830002,\r\n",
"9/17/2019,136.960007,\r\n",
"9/18/2019,137.360001,\r\n",
"9/19/2019,140.300003,1437.089752\r\n",
"9/20/2019,141.009995,\r\n",
"9/23/2019,139.229996,\r\n",
"9/24/2019,140.360001,\r\n",
"9/25/2019,137.500000,\r\n",
"9/26/2019,139.440002,1456.489772\r\n",
"9/27/2019,140.149994,\r\n",
"9/30/2019,138.050003,\r\n",
"10/1/2019,139.660004,1472.589782\r\n",
"10/2/2019,136.250000,\r\n",
"10/3/2019,134.949997,\r\n",
"10/4/2019,136.750000,\r\n",
"10/7/2019,137.139999,\r\n",
"10/8/2019,137.080002,\r\n",
"10/9/2019,137.460007,\r\n",
"10/10/2019,138.490005,1494.989832\r\n",
"10/11/2019,140.119995,\r\n",
"10/14/2019,139.690002,\r\n",
"10/15/2019,140.059998,\r\n",
"10/16/2019,140.789993,\r\n",
"10/17/2019,140.949997,\r\n",
"10/18/2019,139.759995,\r\n",
"10/21/2019,138.449997,\r\n",
"10/22/2019,138.970001,1500.189872\r\n",
"10/23/2019,136.880005,\r\n",
"10/24/2019,139.389999,1525.289812\r\n",
"10/25/2019,139.339996,\r\n",
"10/28/2019,144.399994,\r\n",
"10/29/2019,144.080002,\r\n",
"10/30/2019,143.520004,\r\n",
"10/31/2019,144.899994,\r\n",
"11/1/2019,144.259995,\r\n",
"11/4/2019,144.830002,\r\n",
"11/5/2019,144.970001,\r\n",
"11/6/2019,144.369995,\r\n",
"11/7/2019,143.839996,\r\n",
"11/8/2019,143.979996,\r\n",
"11/11/2019,145.339996,\r\n",
"11/12/2019,146.279999,\r\n",
"11/13/2019,146.740005,\r\n",
"11/14/2019,147.020004,\r\n",
"11/15/2019,148.929993,\r\n",
"11/18/2019,150.070007,\r\n",
"11/19/2019,150.880005,\r\n",
"11/20/2019,150.309998,\r\n",
"11/21/2019,149.399994,\r\n",
"11/22/2019,150.070007,\r\n",
"11/25/2019,150.000000,\r\n",
"11/26/2019,151.360001,\r\n",
"11/27/2019,152.330002,\r\n",
"11/29/2019,152.100006,\r\n",
"12/2/2019,151.809998,\r\n",
"12/3/2019,147.490005,\r\n",
"12/4/2019,150.139999,1551.789752\r\n",
"12/5/2019,150.050003,\r\n",
"12/6/2019,150.990005,\r\n",
"12/9/2019,151.070007,\r\n",
"12/10/2019,151.289993,\r\n",
"12/11/2019,151.539993,\r\n",
"12/12/2019,151.649994,\r\n",
"12/13/2019,153.000000,\r\n",
"12/16/2019,155.110001,\r\n",
"12/17/2019,155.449997,\r\n",
"12/18/2019,154.300003,\r\n",
"12/19/2019,154.000000,\r\n",
"12/20/2019,157.350006,\r\n",
"12/23/2019,158.119995,\r\n",
"12/24/2019,157.479996,\r\n",
"12/26/2019,157.559998,\r\n",
"12/27/2019,159.449997,\r\n",
"12/30/2019,158.990005,\r\n",
"12/31/2019,156.770004,\r\n",
"1/2/2020,158.779999,\r\n",
"1/3/2020,158.320007,\r\n",
"1/6/2020,157.080002,\r\n",
"1/7/2020,159.320007,\r\n",
"1/8/2020,158.929993,\r\n",
"1/9/2020,161.839996,\r\n",
"1/10/2020,162.820007,\r\n",
"1/13/2020,161.759995,\r\n",
"1/14/2020,163.389999,\r\n",
"1/15/2020,162.619995,\r\n",
"1/16/2020,164.350006,\r\n",
"1/17/2020,167.419998,\r\n",
"1/21/2020,166.679993,\r\n",
"1/22/2020,167.399994,\r\n",
"1/23/2020,166.190002,\r\n",
"1/24/2020,167.509995,\r\n",
"1/27/2020,161.149994,\r\n",
"1/28/2020,163.779999,1575.459797\r\n",
"1/29/2020,167.839996,\r\n",
"1/30/2020,174.050003,\r\n",
"1/31/2020,172.210007,\r\n",
"2/3/2020,170.429993,\r\n",
"2/4/2020,177.139999,\r\n",
"2/5/2020,184.029999,\r\n",
"2/6/2020,180.970001,\r\n",
"2/7/2020,182.850006,\r\n",
"2/10/2020,183.580002,\r\n",
"2/11/2020,190.649994,\r\n",
"2/12/2020,185.580002,\r\n",
"2/13/2020,183.080002,\r\n",
"2/14/2020,183.250000,\r\n",
"2/18/2020,185.610001,\r\n",
"2/19/2020,188.059998,\r\n",
"2/20/2020,186.949997,\r\n",
"2/21/2020,183.169998,\r\n",
"2/24/2020,167.770004,\r\n",
"2/25/2020,174.199997,\r\n",
"2/26/2020,169.710007,\r\n",
"2/27/2020,163.320007,\r\n",
"2/28/2020,152.410004,\r\n",
"3/2/2020,165.309998,\r\n",
"3/3/2020,173.800003,\r\n",
"3/4/2020,168.490005,\r\n",
"3/5/2020,166.050003,\r\n",
"3/6/2020,162.610001,\r\n",
"3/9/2020,151.000000,\r\n",
"3/10/2020,158.160004,\r\n",
"3/11/2020,157.130005,\r\n",
"3/12/2020,145.300003,\r\n",
"3/13/2020,147.500000,\r\n",
"3/16/2020,140.000000,\r\n",
"3/17/2020,140.000000,\r\n",
"3/18/2020,138.000000,\r\n",
"3/19/2020,142.770004,\r\n",
"3/20/2020,146.000000,\r\n",
"3/23/2020,137.009995,\r\n",
"3/24/2020,143.750000,\r\n",
"3/25/2020,148.910004,\r\n",
"3/26/2020,148.399994,\r\n",
"3/27/2020,151.750000,1431.279761\r\n",
"3/30/2020,152.440002,\r\n",
"3/31/2020,159.399994,\r\n",
"4/1/2020,153.000000,\r\n",
"4/2/2020,151.860001,\r\n",
"4/3/2020,155.100006,\r\n",
"4/6/2020,160.320007,\r\n",
"4/7/2020,169.589996,\r\n",
"4/8/2020,165.669998,\r\n",
"4/9/2020,166.360001,\r\n",
"4/13/2020,164.350006,\r\n",
"4/14/2020,169.000000,\r\n",
"4/15/2020,171.199997,\r\n",
"4/16/2020,174.300003,\r\n",
"4/17/2020,179.500000,\r\n",
"4/20/2020,176.630005,\r\n",
"4/21/2020,173.500000,\r\n",
"4/22/2020,171.389999,\r\n",
"4/23/2020,174.110001,\r\n",
"4/24/2020,172.059998,\r\n",
"4/27/2020,176.589996,\r\n",
"4/28/2020,175.589996,\r\n",
"4/29/2020,173.220001,\r\n",
"4/30/2020,180.000000,\r\n",
"5/1/2020,175.800003,\r\n",
"5/4/2020,174.490005,\r\n",
"5/5/2020,180.619995,\r\n",
"5/6/2020,182.080002,\r\n",
"5/7/2020,184.169998,\r\n",
"5/8/2020,184.979996,\r\n",
"5/11/2020,183.149994,\r\n",
"5/12/2020,186.800003,\r\n",
"5/13/2020,182.550003,\r\n",
"5/14/2020,177.539993,\r\n",
"5/15/2020,179.059998,1443.439801\r\n",
"5/18/2020,185.750000,\r\n",
"5/19/2020,185.029999,\r\n",
"5/20/2020,184.809998,\r\n",
"5/21/2020,185.399994,\r\n",
"5/22/2020,183.190002,\r\n",
"5/26/2020,186.339996,\r\n",
"5/27/2020,180.199997,\r\n",
"5/28/2020,180.740005,\r\n",
"5/29/2020,182.729996,1463.679793\r\n",
"6/1/2020,182.539993,\r\n",
"6/2/2020,184.250000,1477.359849\r\n",
"6/3/2020,184.820007,\r\n",
"6/4/2020,184.300003,\r\n",
"6/5/2020,182.619995,\r\n",
"6/8/2020,185.940002,1503.919905\r\n",
"6/9/2020,188.000000,\r\n",
"6/10/2020,191.130005,\r\n",
"6/11/2020,193.130005,\r\n",
"6/12/2020,190.539993,\r\n",
"6/15/2020,184.580002,\r\n",
"6/16/2020,192.889999,1570.399881\r\n",
"6/17/2020,195.029999,\r\n",
"6/18/2020,194.000000,\r\n",
"6/19/2020,198.589996,\r\n",
"6/22/2020,195.789993,\r\n",
"6/23/2020,202.089996,\r\n",
"6/24/2020,201.600006,\r\n",
"6/25/2020,197.800003,\r\n",
"6/26/2020,199.729996,\r\n",
"6/29/2020,195.779999,\r\n",
"6/30/2020,197.880005,\r\n",
"7/1/2020,203.139999,\r\n",
"7/2/2020,205.679993,\r\n",
"7/6/2020,208.830002,\r\n",
"7/7/2020,210.449997,\r\n",
"7/8/2020,210.070007,\r\n",
"7/9/2020,216.330002,\r\n",
"7/10/2020,213.619995,\r\n",
"7/13/2020,214.479996,\r\n",
"7/14/2020,206.130005,\r\n",
"7/15/2020,209.559998,\r\n",
"7/16/2020,205.399994,\r\n",
"7/17/2020,204.470001,\r\n",
"7/20/2020,205.000000,\r\n",
"7/21/2020,213.660004,1634.729902\r\n",
"7/22/2020,209.199997,\r\n",
"7/23/2020,207.190002,\r\n",
"7/24/2020,200.419998,\r\n",
"7/27/2020,201.470001,\r\n",
"7/28/2020,203.610001,\r\n",
"7/29/2020,202.500000,\r\n",
"7/30/2020,201.000000,\r\n",
"7/31/2020,204.399994,\r\n",
"8/3/2020,211.520004,1723.529950\r\n",
"8/4/2020,214.169998,\r\n",
"8/5/2020,214.899994,\r\n",
"8/6/2020,212.339996,\r\n",
"8/7/2020,214.850006,\r\n",
"8/10/2020,211.669998,\r\n",
"8/11/2020,207.160004,\r\n",
"8/12/2020,205.289993,\r\n",
"8/13/2020,209.440002,1741.769934\r\n",
"8/14/2020,208.759995,\r\n",
"8/17/2020,209.600006,\r\n",
"8/18/2020,210.529999,\r\n",
"8/19/2020,211.490005,\r\n",
"8/20/2020,209.539993,\r\n",
"8/21/2020,213.860001,\r\n",
"8/24/2020,214.789993,\r\n",
"8/25/2020,213.100006,\r\n",
"8/26/2020,217.880005,\r\n",
"8/27/2020,222.889999,\r\n",
"8/28/2020,228.179993,\r\n",
"8/31/2020,227.000000,\r\n",
"9/1/2020,225.509995,\r\n",
"9/2/2020,227.970001,\r\n",
"9/3/2020,229.270004,\r\n",
"9/4/2020,215.100006,\r\n",
"9/8/2020,206.500000,\r\n",
"9/9/2020,207.600006,\r\n",
"9/10/2020,213.399994,\r\n",
"9/11/2020,207.199997,\r\n",
"9/14/2020,204.240005,\r\n",
"9/15/2020,208.419998,\r\n",
"9/16/2020,210.619995,\r\n",
"9/17/2020,200.050003,\r\n",
"9/18/2020,202.800003,\r\n",
"9/21/2020,197.190002,\r\n",
"9/22/2020,205.059998,\r\n",
"9/23/2020,207.899994,\r\n",
"9/24/2020,199.850006,\r\n",
"9/25/2020,203.550003,\r\n",
"9/28/2020,210.880005,1708.009926\r\n",
"9/29/2020,209.350006,\r\n",
"9/30/2020,207.729996,\r\n",
"10/1/2020,213.490005,1741.129918\r\n",
"10/2/2020,208.000000,\r\n",
"10/5/2020,207.220001,\r\n",
"10/6/2020,208.820007,\r\n",
"10/7/2020,207.059998,\r\n",
"10/8/2020,210.509995,\r\n",
"10/9/2020,211.229996,\r\n",
"10/12/2020,218.789993,\r\n",
"10/13/2020,222.720001,\r\n",
"10/14/2020,223.000000,\r\n",
"10/15/2020,217.100006,\r\n",
"10/16/2020,220.149994,\r\n",
"10/19/2020,220.419998,\r\n",
"10/20/2020,215.800003,\r\n",
"10/21/2020,213.119995,\r\n",
"10/22/2020,213.929993,\r\n",
"10/23/2020,215.029999,\r\n",
"10/26/2020,213.850006,\r\n",
"10/27/2020,211.589996,\r\n",
"10/28/2020,207.669998,\r\n",
"10/29/2020,204.070007,\r\n",
"10/30/2020,203.500000,\r\n",
"11/2/2020,204.289993,\r\n",
"11/3/2020,203.889999,\r\n",
"11/4/2020,214.020004,1742.489902\r\n",
"11/5/2020,222.039993,\r\n",
"11/6/2020,222.259995,\r\n",
"11/9/2020,224.440002,\r\n",
"11/10/2020,214.500000,\r\n",
"11/11/2020,212.389999,\r\n",
"11/12/2020,217.210007,1781.049966\r\n",
"11/13/2020,216.360001,\r\n",
"11/16/2020,214.869995,\r\n",
"11/17/2020,216.100006,\r\n",
"11/18/2020,213.649994,\r\n",
"11/19/2020,211.380005,\r\n",
"11/20/2020,212.199997,\r\n",
"11/23/2020,210.949997,\r\n",
"11/24/2020,209.589996,\r\n",
"11/25/2020,215.110001,1810.889934\r\n",
"11/27/2020,214.850006,\r\n",
"11/30/2020,214.100006,\r\n",
"12/1/2020,214.509995,\r\n",
"12/2/2020,214.880005,\r\n",
"12/3/2020,214.610001,\r\n",
"12/4/2020,214.220001,\r\n",
"12/7/2020,214.369995,\r\n",
"12/8/2020,213.970001,\r\n",
"12/9/2020,215.160004,1819.369918\r\n",
"12/10/2020,211.770004,\r\n",
"12/11/2020,210.050003,\r\n",
"12/14/2020,213.100006,\r\n",
"12/15/2020,215.169998,1846.569870\r\n",
"12/16/2020,214.750000,\r\n",
"12/17/2020,219.869995,\r\n",
"12/18/2020,218.589996,\r\n",
"12/21/2020,217.550003,\r\n",
"12/22/2020,222.690002,\r\n",
"12/23/2020,223.110001,\r\n",
"12/24/2020,221.419998,\r\n",
"12/28/2020,224.449997,\r\n",
"12/29/2020,226.309998,\r\n",
"12/30/2020,225.229996,\r\n",
"12/31/2020,221.699997,\r\n",
"1/4/2021,222.529999,\r\n",
"1/5/2021,217.259995,\r\n",
"1/6/2021,212.169998,\r\n",
"1/7/2021,214.039993,\r\n",
"1/8/2021,218.679993,1857.929854\r\n",
"1/11/2021,218.470001,\r\n",
"1/12/2021,216.500000,\r\n",
"1/13/2021,214.020004,\r\n",
"1/14/2021,215.910004,\r\n",
"1/15/2021,213.520004,\r\n",
"1/19/2021,213.750000,\r\n",
"1/20/2021,217.699997,\r\n",
"1/21/2021,224.699997,1907.769822\r\n",
"1/22/2021,227.080002,\r\n",
"1/25/2021,229.119995,\r\n",
"1/26/2021,231.860001,\r\n",
"1/27/2021,238.000000,\r\n",
"1/28/2021,235.610001,\r\n",
"1/29/2021,235.990005,\r\n",
"2/1/2021,235.059998,\r\n",
"2/2/2021,241.300003,\r\n",
"2/3/2021,239.570007,\r\n",
"2/4/2021,242.660004,\r\n",
"2/5/2021,242.229996,\r\n",
"2/8/2021,243.149994,\r\n",
"2/9/2021,241.869995,\r\n",
"2/10/2021,245.000000,\r\n",
"2/11/2021,244.779999,\r\n",
"2/12/2021,243.929993,\r\n",
"2/16/2021,245.029999,\r\n",
"2/17/2021,241.320007,\r\n",
"2/18/2021,241.800003,\r\n",
"2/19/2021,243.750000,\r\n",
"2/22/2021,237.419998,\r\n",
"2/23/2021,230.330002,\r\n",
"2/24/2021,230.009995,\r\n",
"2/25/2021,232.080002,\r\n",
"2/26/2021,231.529999,\r\n",
"3/1/2021,235.899994,\r\n",
"3/2/2021,237.009995,\r\n",
"3/3/2021,232.160004,\r\n",
"3/4/2021,226.740005,\r\n",
"3/5/2021,229.520004,\r\n",
"3/8/2021,231.369995,\r\n",
"3/9/2021,232.880005,\r\n",
"3/10/2021,237.000000,1904.409838\r\n",
"3/11/2021,234.960007,\r\n",
"3/12/2021,234.009995,\r\n",
"3/15/2021,234.960007,\r\n",
"3/16/2021,236.279999,1914.969774\r\n",
"3/17/2021,236.149994,\r\n",
"3/18/2021,232.559998,\r\n",
"3/19/2021,231.020004,\r\n",
"3/22/2021,230.270004,\r\n",
"3/23/2021,237.490005,1954.409830\r\n",
"3/24/2021,237.850006,\r\n",
"3/25/2021,235.300003,\r\n",
"3/26/2021,231.550003,\r\n",
"3/29/2021,236.589996,1994.729774\r\n",
"3/30/2021,233.529999,\r\n",
"3/31/2021,232.910004,\r\n",
"4/1/2021,238.470001,2034.249790\r\n",
"4/5/2021,242.759995,\r\n",
"4/6/2021,247.610001,\r\n",
"4/7/2021,247.809998,\r\n",
"4/8/2021,252.770004,\r\n",
"4/9/2021,252.869995,\r\n",
"4/12/2021,254.710007,\r\n",
"4/13/2021,257.260010,\r\n",
"4/14/2021,257.480011,\r\n",
"4/15/2021,257.929993,\r\n",
"4/16/2021,259.470001,\r\n",
"4/19/2021,260.190002,\r\n",
"4/20/2021,257.820007,\r\n",
"4/21/2021,258.940002,\r\n",
"4/22/2021,260.209991,\r\n",
"4/23/2021,257.880005,\r\n",
"4/26/2021,261.660004,\r\n",
"4/27/2021,261.579987,\r\n",
"4/28/2021,256.079987,\r\n",
"4/29/2021,255.460007,\r\n",
"4/30/2021,249.740005,\r\n",
"5/3/2021,253.399994,\r\n",
"5/4/2021,250.970001,\r\n",
"5/5/2021,249.059998,\r\n",
"5/6/2021,246.449997,\r\n",
"5/7/2021,252.149994,\r\n",
"5/10/2021,250.869995,\r\n",
"5/11/2021,244.550003,\r\n",
"5/12/2021,242.169998,\r\n",
"5/13/2021,241.800003,\r\n",
"5/14/2021,245.580002,\r\n",
"5/17/2021,246.550003,\r\n",
"5/18/2021,246.270004,\r\n",
"5/19/2021,239.309998,\r\n",
"5/20/2021,243.960007,\r\n",
"5/21/2021,247.570007,\r\n",
"5/24/2021,247.789993,\r\n",
"5/25/2021,251.770004,2050.489782\r\n",
"5/26/2021,251.429993,\r\n",
"5/27/2021,251.169998,\r\n",
"5/28/2021,251.000000,\r\n",
"6/1/2021,251.229996,\r\n",
"6/2/2021,248.130005,\r\n",
"6/3/2021,245.220001,\r\n",
"6/4/2021,247.759995,2070.809734\r\n",
"6/7/2021,249.979996,\r\n",
"6/8/2021,255.160004,\r\n",
"6/9/2021,253.809998,\r\n",
"6/10/2021,254.289993,\r\n",
"6/11/2021,257.989990,\r\n",
"6/14/2021,257.899994,\r\n",
"6/15/2021,259.769989,\r\n",
"6/16/2021,259.399994,\r\n",
"6/17/2021,256.070007,\r\n",
"6/18/2021,259.630005,\r\n",
"6/21/2021,259.820007,\r\n",
"6/22/2021,262.720001,\r\n",
"6/23/2021,265.989990,\r\n",
"6/24/2021,266.160004,\r\n",
"6/25/2021,266.230011,\r\n",
"6/28/2021,266.190002,\r\n",
"6/29/2021,268.869995,\r\n",
"6/30/2021,270.690002,\r\n",
"7/1/2021,269.609985,\r\n",
"7/2/2021,272.820007,\r\n",
"7/6/2021,278.029999,\r\n",
"7/7/2021,279.399994,\r\n",
"7/8/2021,276.899994,\r\n",
"7/9/2021,275.720001,\r\n",
"7/12/2021,279.160004,\r\n",
"7/13/2021,277.519989,\r\n",
"7/14/2021,282.350006,\r\n",
"7/15/2021,282.000000,\r\n",
"7/16/2021,282.070007,\r\n",
"7/19/2021,278.929993,\r\n",
"7/20/2021,278.029999,\r\n",
"7/21/2021,278.899994,\r\n",
"7/22/2021,283.839996,\r\n",
"7/23/2021,287.369995,\r\n",
"7/26/2021,289.000000,\r\n",
"7/27/2021,289.429993,\r\n",
"7/28/2021,288.989990,\r\n",
"7/29/2021,286.239990,\r\n",
"7/30/2021,285.170013,\r\n",
"8/2/2021,286.359985,\r\n",
"8/3/2021,285.420013,\r\n",
"8/4/2021,286.220001,\r\n",
"8/5/2021,286.880005,\r\n",
"8/6/2021,288.510010,\r\n",
"8/9/2021,289.750000,\r\n",
"8/10/2021,288.799988,\r\n",
"8/11/2021,287.209991,\r\n",
"8/12/2021,286.630005,\r\n",
"8/13/2021,289.480011,\r\n",
"8/16/2021,293.190002,\r\n",
"8/17/2021,292.390015,\r\n",
"8/18/2021,292.040009,\r\n",
"8/19/2021,288.690002,\r\n",
"8/20/2021,299.720001,\r\n",
"8/23/2021,303.250000,\r\n",
"8/24/2021,305.019989,\r\n",
"8/25/2021,304.299988,\r\n",
"8/26/2021,300.989990,\r\n",
"8/27/2021,298.989990,\r\n",
"8/30/2021,301.119995,\r\n",
"8/31/2021,304.420013,\r\n",
"9/1/2021,302.869995,\r\n",
"9/2/2021,302.200012,\r\n",
"9/3/2021,300.989990,\r\n",
"9/7/2021,301.010010,\r\n",
"9/8/2021,299.779999,\r\n",
"9/9/2021,300.820007,\r\n",
"9/10/2021,298.420013,\r\n",
"9/13/2021,297.549988,\r\n",
"9/14/2021,299.559998,\r\n",
"9/15/2021,303.260010,2099.849716\r\n",
"9/16/2021,303.760010,\r\n",
"9/17/2021,304.170013,\r\n",
"9/20/2021,296.329987,\r\n",
"9/21/2021,295.690002,\r\n",
"9/22/2021,296.730011,\r\n",
"9/23/2021,298.850006,\r\n",
"9/24/2021,298.230011,\r\n",
"9/27/2021,296.140015,\r\n",
"9/28/2021,289.799988,\r\n",
"9/29/2021,285.100006,\r\n",
"9/30/2021,285.709991,\r\n",
"10/1/2021,282.119995,\r\n",
"10/4/2021,287.399994,\r\n",
"10/5/2021,284.049988,\r\n",
"10/6/2021,285.779999,\r\n",
"10/7/2021,295.179993,2091.799758\r\n",
"10/8/2021,296.220001,\r\n",
"10/11/2021,292.920013,\r\n",
"10/12/2021,295.339996,2108.739639\r\n",
"10/13/2021,294.910004,\r\n",
"10/14/2021,299.209991,\r\n",
"10/15/2021,302.339996,\r\n",
"10/18/2021,303.570007,\r\n",
"10/19/2021,308.350006,\r\n",
"10/20/2021,309.209991,\r\n",
"10/21/2021,307.170013,\r\n",
"10/22/2021,310.399994,\r\n",
"10/25/2021,309.359985,\r\n",
"10/26/2021,311.000000,\r\n",
"10/27/2021,316.000000,\r\n",
"10/28/2021,324.329987,\r\n",
"10/29/2021,324.130005,\r\n",
"11/1/2021,331.359985,\r\n",
"11/2/2021,330.309998,\r\n",
"11/3/2021,333.899994,\r\n",
"11/4/2021,332.890015,\r\n",
"11/5/2021,338.510010,\r\n",
"11/8/2021,337.299988,\r\n",
"11/9/2021,337.109985,\r\n",
"11/10/2021,334.570007,\r\n",
"11/11/2021,331.250000,\r\n",
"11/12/2021,333.920013,\r\n",
"11/15/2021,337.540009,\r\n",
"11/16/2021,335.679993,\r\n",
"11/17/2021,338.940002,\r\n",
"11/18/2021,338.179993,\r\n",
"11/19/2021,342.640015,\r\n",
"11/22/2021,344.619995,\r\n",
"11/23/2021,337.049988,\r\n",
"11/24/2021,336.279999,\r\n",
"11/26/2021,334.350006,\r\n",
"11/29/2021,334.940002,\r\n",
"11/30/2021,335.320007,\r\n",
"12/1/2021,335.130005,\r\n",
"12/2/2021,330.299988,\r\n",
"12/3/2021,331.989990,\r\n",
"12/6/2021,323.950012,\r\n",
"12/7/2021,331.640015,\r\n",
"12/8/2021,335.309998,2114.499591\r\n",
"12/9/2021,334.410004,\r\n",
"12/10/2021,334.980011,\r\n",
"12/13/2021,340.679993,2152.119525\r\n",
"12/14/2021,333.220001,\r\n",
"12/15/2021,328.609985,\r\n",
"12/16/2021,335.709991,2167.059465\r\n",
"12/17/2021,320.880005,\r\n",
"12/20/2021,320.049988,\r\n",
"12/21/2021,323.290009,\r\n",
"12/22/2021,328.299988,\r\n",
"12/23/2021,332.750000,2238.279435\r\n",
"12/27/2021,335.459991,\r\n",
"12/28/2021,343.149994,\r\n",
"12/29/2021,341.299988,\r\n",
"12/30/2021,341.910004,\r\n",
"12/31/2021,338.510010,\r\n",
"1/3/2022,335.350006,\r\n",
"1/4/2022,334.829987,\r\n",
"1/5/2022,325.859985,\r\n",
"1/6/2022,313.149994,\r\n",
"1/7/2022,314.149994,\r\n",
"1/10/2022,309.489990,\r\n",
"1/11/2022,313.380005,\r\n",
"1/12/2022,319.670013,\r\n",
"1/13/2022,320.470001,\r\n",
"1/14/2022,304.250000,\r\n",
"1/18/2022,304.070007,\r\n",
"1/19/2022,306.290009,\r\n",
"1/20/2022,309.070007,\r\n",
"1/21/2022,302.690002,\r\n",
"1/24/2022,292.200012,\r\n",
"1/25/2022,291.519989,\r\n",
"1/26/2022,307.989990,\r\n",
"1/27/2022,302.660004,\r\n",
"1/28/2022,300.230011,\r\n",
"1/31/2022,308.950012,\r\n",
"2/1/2022,310.410004,2145.579549\r\n",
"2/2/2022,309.630005,\r\n",
"2/3/2022,309.489990,\r\n",
"2/4/2022,300.209991,\r\n",
"2/7/2022,306.170013,\r\n",
"2/8/2022,301.250000,\r\n",
"2/9/2022,309.869995,2213.199577\r\n",
"2/10/2022,304.040009,\r\n",
"2/11/2022,303.190002,\r\n",
"2/14/2022,293.769989,\r\n",
"2/15/2022,300.010010,\r\n",
"2/16/2022,298.369995,\r\n",
"2/17/2022,296.359985,\r\n",
"2/18/2022,293.049988,\r\n",
"2/22/2022,285.000000,\r\n",
"2/23/2022,290.179993,\r\n",
"2/24/2022,272.510010,\r\n",
"2/25/2022,295.140015,\r\n",
"2/28/2022,294.309998,\r\n",
"3/1/2022,296.399994,\r\n",
"3/2/2022,295.359985,\r\n",
"3/3/2022,302.890015,2205.149619\r\n",
"3/4/2022,294.290009,\r\n",
"3/7/2022,288.529999,\r\n",
"3/8/2022,277.799988,\r\n",
"3/9/2022,283.440002,\r\n",
"3/10/2022,283.019989,\r\n",
"3/11/2022,287.959991,\r\n",
"3/14/2022,280.339996,\r\n",
"3/15/2022,280.350006,\r\n",
"3/16/2022,289.109985,\r\n",
"3/17/2022,293.290009,2198.149619\r\n",
"3/18/2022,295.369995,\r\n",
"3/21/2022,298.890015,\r\n",
"3/22/2022,299.799988,\r\n",
"3/23/2022,300.510010,\r\n",
"3/24/2022,299.140015,\r\n",
"3/25/2022,305.230011,\r\n",
"3/28/2022,304.329987,\r\n",
"3/29/2022,313.910004,\r\n",
"3/30/2022,313.760010,\r\n",
"3/31/2022,313.899994,\r\n",
"4/1/2022,309.369995,\r\n",
"4/4/2022,310.089996,\r\n",
"4/5/2022,313.269989,\r\n",
"4/6/2022,305.190002,\r\n",
"4/7/2022,296.660004,\r\n",
"4/8/2022,300.440002,\r\n",
"4/11/2022,291.790009,\r\n",
"4/12/2022,289.239990,\r\n",
"4/13/2022,282.730011,\r\n",
"4/14/2022,288.089996,\r\n",
"4/18/2022,278.910004,\r\n",
"4/19/2022,279.380005,\r\n",
"4/20/2022,289.399994,\r\n",
"4/21/2022,288.579987,\r\n",
"4/22/2022,281.679993,\r\n",
"4/25/2022,273.290009,\r\n",
"4/26/2022,277.500000,\r\n",
"4/27/2022,282.100006,\r\n",
"4/28/2022,285.190002,\r\n",
"4/29/2022,288.609985,\r\n",
"5/2/2022,277.709991,\r\n",
"5/3/2022,283.959991,\r\n",
"5/4/2022,282.589996,\r\n",
"5/5/2022,285.540009,2120.309654\r\n",
"5/6/2022,274.809998,\r\n",
"5/9/2022,270.059998,\r\n",
"5/10/2022,271.690002,\r\n",
"5/11/2022,265.679993,\r\n",
"5/12/2022,257.690002,\r\n",
"5/13/2022,257.350006,\r\n",
"5/16/2022,259.959991,\r\n",
"5/17/2022,266.109985,\r\n",
"5/18/2022,263.000000,\r\n",
"5/19/2022,253.899994,\r\n",
"5/20/2022,257.239990,\r\n",
"5/23/2022,255.490005,\r\n",
"5/24/2022,257.890015,\r\n",
"5/25/2022,258.140015,\r\n",
"5/26/2022,262.269989,\r\n",
"5/27/2022,268.480011,2075.999745\r\n",
"5/31/2022,272.529999,\r\n",
"6/1/2022,275.200012,\r\n",
"6/2/2022,264.450012,\r\n",
"6/3/2022,270.309998,2117.019647\r\n",
"6/6/2022,272.059998,\r\n",
"6/7/2022,266.640015,\r\n",
"6/8/2022,271.709991,\r\n",
"6/9/2022,267.779999,\r\n",
"6/10/2022,260.579987,\r\n",
"6/13/2022,245.110001,\r\n",
"6/14/2022,243.860001,\r\n",
"6/15/2022,248.309998,\r\n",
"6/16/2022,245.979996,\r\n",
"6/17/2022,244.699997,\r\n",
"6/21/2022,250.259995,\r\n",
"6/22/2022,251.889999,\r\n",
"6/23/2022,255.570007,\r\n",
"6/24/2022,261.809998,2126.859735\r\n",
"6/27/2022,268.209991,\r\n",
"6/28/2022,263.980011,\r\n",
"6/29/2022,257.589996,\r\n",
"6/30/2022,257.049988,\r\n",
"7/1/2022,256.390015,\r\n",
"7/5/2022,256.160004,\r\n",
"7/6/2022,263.750000,2176.139767\r\n",
"7/7/2022,265.119995,\r\n",
"7/8/2022,264.790009,\r\n",
"7/11/2022,265.649994,\r\n",
"7/12/2022,265.880005,\r\n",
"7/13/2022,250.190002,\r\n",
"7/14/2022,250.570007,\r\n",
"7/15/2022,255.720001,\r\n",
"7/18/2022,259.750000,2252.619751\r\n",
"7/19/2022,257.579987,\r\n",
"7/20/2022,259.899994,2271.179807\r\n",
"7/21/2022,259.790009,\r\n",
"7/22/2022,265.239990,\r\n",
"7/25/2022,261.000000,\r\n",
"7/26/2022,259.859985,\r\n",
"7/27/2022,261.160004,\r\n",
"7/28/2022,269.750000,\r\n",
"7/29/2022,277.700012,\r\n",
"8/1/2022,277.820007,\r\n",
"8/2/2022,276.000000,\r\n",
"8/3/2022,276.760010,\r\n",
"8/4/2022,281.799988,\r\n",
"8/5/2022,279.149994,\r\n",
"8/8/2022,284.049988,\r\n",
"8/9/2022,279.640015,\r\n",
"8/10/2022,288.170013,\r\n",
"8/11/2022,290.850006,\r\n",
"8/12/2022,288.480011,\r\n",
"8/15/2022,291.000000,\r\n",
"8/16/2022,291.989990,\r\n",
"8/17/2022,289.739990,\r\n",
"8/18/2022,290.190002,\r\n",
"8/19/2022,288.899994,\r\n",
"8/22/2022,282.079987,\r\n",
"8/23/2022,276.440002,\r\n",
"8/24/2022,275.410004,\r\n",
"8/25/2022,277.329987,\r\n",
"8/26/2022,279.079987,\r\n",
"8/29/2022,265.850006,\r\n",
"8/30/2022,266.670013,\r\n",
"8/31/2022,265.390015,\r\n",
"9/1/2022,258.869995,\r\n",
"9/2/2022,261.700012,\r\n",
"9/6/2022,256.200012,\r\n",
"9/7/2022,254.699997,\r\n",
"9/8/2022,257.510010,\r\n",
"9/9/2022,260.500000,\r\n",
"9/12/2022,265.779999,\r\n",
"9/13/2022,258.839996,\r\n",
"9/14/2022,253.529999,\r\n",
"9/15/2022,249.770004,\r\n",
"9/16/2022,244.259995,\r\n",
"9/19/2022,242.470001,\r\n",
"9/20/2022,242.070007,\r\n",
"9/21/2022,244.270004,\r\n",
"9/22/2022,237.869995,\r\n",
"9/23/2022,239.539993,\r\n",
"9/26/2022,237.050003,\r\n",
"9/27/2022,239.979996,\r\n",
"9/28/2022,236.809998,\r\n",
"9/29/2022,238.889999,\r\n",
"9/30/2022,238.289993,\r\n",
"10/3/2022,235.410004,\r\n",
"10/4/2022,245.089996,\r\n",
"10/5/2022,245.990005,2027.579831\r\n",
"10/6/2022,247.929993,\r\n",
"10/7/2022,240.899994,\r\n",
"10/10/2022,233.050003,\r\n",
"10/11/2022,227.619995,\r\n",
"10/12/2022,225.399994,\r\n",
"10/13/2022,219.850006,\r\n",
"10/14/2022,235.539993,\r\n",
"10/17/2022,235.820007,\r\n",
"10/18/2022,243.240005,2046.299919\r\n",
"10/19/2022,237.039993,\r\n",
"10/20/2022,235.770004,\r\n",
"10/21/2022,234.740005,\r\n",
"10/24/2022,243.759995,2100.059935\r\n",
"10/25/2022,247.259995,\r\n",
"10/26/2022,231.169998,\r\n",
"10/27/2022,231.039993,\r\n",
"10/28/2022,226.240005,\r\n",
"10/31/2022,233.759995,\r\n",
"11/1/2022,234.600006,\r\n",
"11/2/2022,229.460007,\r\n",
"11/3/2022,220.089996,\r\n",
"11/4/2022,217.550003,\r\n",
"11/7/2022,221.990005,\r\n",
"11/8/2022,228.699997,\r\n",
"11/9/2022,227.369995,\r\n",
"11/10/2022,235.429993,2138.399890\r\n",
"11/11/2022,242.990005,\r\n",
"11/14/2022,241.990005,\r\n",
"11/15/2022,245.660004,\r\n",
"11/16/2022,242.789993,\r\n",
"11/17/2022,237.779999,\r\n",
"11/18/2022,243.509995,\r\n",
"11/21/2022,241.429993,\r\n",
"11/22/2022,243.589996,\r\n",
"11/23/2022,245.110001,\r\n",
"11/25/2022,247.309998,\r\n",
"11/28/2022,246.080002,\r\n",
"11/29/2022,241.399994,\r\n",
"11/30/2022,240.570007,\r\n",
"12/1/2022,253.869995,\r\n",
"12/2/2022,249.820007,\r\n",
"12/5/2022,252.009995,\r\n",
"12/6/2022,250.820007,\r\n",
"12/7/2022,244.830002,\r\n",
"12/8/2022,244.839996,\r\n",
"12/9/2022,244.699997,\r\n",
"12/12/2022,247.449997,2160.399890\r\n",
"12/13/2022,261.690002,\r\n",
"12/14/2022,257.130005,\r\n",
"12/15/2022,253.720001,\r\n",
"12/16/2022,248.550003,\r\n",
"12/19/2022,244.860001,\r\n",
"12/20/2022,239.399994,\r\n",
"12/21/2022,241.690002,\r\n",
"12/22/2022,241.259995,\r\n",
"12/23/2022,236.110001,\r\n",
"12/27/2022,238.699997,\r\n",
"12/28/2022,236.889999,\r\n",
"12/29/2022,235.649994,\r\n",
"12/30/2022,238.210007,\r\n",
"1/3/2023,243.080002,\r\n",
"1/4/2023,232.279999,\r\n",
"1/5/2023,227.199997,\r\n",
"1/6/2023,223.000000,\r\n",
"1/9/2023,226.449997,\r\n",
"1/10/2023,227.759995,\r\n",
"1/11/2023,231.289993,\r\n",
"1/12/2023,235.259995,\r\n",
"1/13/2023,237.000000,2097.519882\r\n",
"1/17/2023,237.970001,\r\n",
"1/18/2023,241.570007,\r\n",
"1/19/2023,233.779999,\r\n",
"1/20/2023,234.860001,\r\n",
"1/23/2023,241.100006,2156.079938\r\n",
"1/24/2023,242.500000,\r\n",
"1/25/2023,234.479996,\r\n",
"1/26/2023,243.649994,2238.609920\r\n",
"1/27/2023,248.990005,\r\n",
"1/30/2023,244.509995,\r\n",
"1/31/2023,243.449997,\r\n",
"2/1/2023,248.000000,\r\n",
"2/2/2023,258.820007,\r\n",
"2/3/2023,259.540009,\r\n",
"2/6/2023,257.440002,\r\n",
"2/7/2023,260.529999,\r\n",
"2/8/2023,273.200012,\r\n",
"2/9/2023,273.799988,\r\n",
"2/10/2023,261.529999,\r\n",
"2/13/2023,267.640015,\r\n",
"2/14/2023,272.670013,\r\n",
"2/15/2023,268.320007,\r\n",
"2/16/2023,264.019989,\r\n",
"2/17/2023,259.390015,\r\n",
"2/21/2023,254.479996,\r\n",
"2/22/2023,254.089996,\r\n",
"2/23/2023,255.559998,\r\n",
"2/24/2023,249.960007,\r\n",
"2/27/2023,252.460007,\r\n",
"2/28/2023,249.070007,\r\n",
"3/1/2023,250.759995,\r\n",
"3/2/2023,246.550003,\r\n",
"3/3/2023,252.190002,\r\n",
"3/6/2023,256.429993,\r\n",
"3/7/2023,256.299988,\r\n",
"3/8/2023,254.039993,\r\n",
"3/9/2023,255.820007,\r\n",
"3/10/2023,251.080002,\r\n",
"3/13/2023,247.399994,\r\n",
"3/14/2023,256.750000,2256.769952\r\n",
"3/15/2023,259.980011,\r\n",
"3/16/2023,265.209991,\r\n",
"3/17/2023,278.260010,\r\n",
"3/20/2023,276.980011,\r\n",
"3/21/2023,274.880005,\r\n",
"3/22/2023,273.399994,\r\n",
"3/23/2023,277.940002,\r\n",
"3/24/2023,277.239990,\r\n",
"3/27/2023,280.500000,\r\n",
"3/28/2023,275.790009,\r\n",
"3/29/2023,278.959991,\r\n",
"3/30/2023,284.230011,\r\n",
"3/31/2023,283.730011,\r\n",
"4/3/2023,286.519989,\r\n",
"4/4/2023,287.230011,\r\n",
"4/5/2023,285.850006,\r\n",
"4/6/2023,283.209991,\r\n",
"4/10/2023,289.209991,\r\n",
"4/11/2023,285.750000,\r\n",
"4/12/2023,284.790009,\r\n",
"4/13/2023,283.589996,\r\n",
"4/14/2023,287.000000,\r\n",
"4/17/2023,289.929993,\r\n",
"4/18/2023,291.570007,\r\n",
"4/19/2023,285.989990,\r\n",
"4/20/2023,285.250000,\r\n",
"4/21/2023,285.010010,\r\n",
"4/24/2023,282.089996,\r\n",
"4/25/2023,279.510010,\r\n",
"4/26/2023,296.700012,2373.650080\r\n",
"4/27/2023,295.970001,\r\n",
"4/28/2023,304.010010,\r\n",
"5/1/2023,306.970001,\r\n",
"5/2/2023,307.760010,\r\n",
"5/3/2023,306.619995,\r\n",
"5/4/2023,306.239990,\r\n",
"5/5/2023,305.720001,\r\n",
"5/8/2023,310.130005,\r\n",
"5/9/2023,308.000000,\r\n",
"5/10/2023,308.619995,\r\n",
"5/11/2023,310.100006,\r\n",
"5/12/2023,310.549988,\r\n",
"5/15/2023,309.100006,\r\n",
"5/16/2023,309.829987,\r\n",
"5/17/2023,312.290009,\r\n",
"5/18/2023,314.529999,\r\n",
"5/19/2023,316.739990,\r\n",
"5/22/2023,318.600006,\r\n",
"5/23/2023,320.029999,\r\n",
"5/24/2023,314.730011,\r\n",
"5/25/2023,323.239990,\r\n",
"5/26/2023,324.019989,\r\n",
"5/30/2023,335.230011,\r\n",
"5/31/2023,332.290009,\r\n",
"6/1/2023,325.929993,\r\n",
"6/2/2023,334.250000,\r\n",
"6/5/2023,335.220001,\r\n",
"6/6/2023,335.329987,\r\n",
"6/7/2023,331.649994,\r\n",
"6/8/2023,323.940002,\r\n",
"6/9/2023,324.989990,\r\n",
"6/12/2023,328.579987,\r\n",
"6/13/2023,334.470001,\r\n",
"6/14/2023,334.339996,\r\n",
"6/15/2023,337.480011,\r\n",
"6/16/2023,351.320007,\r\n",
"6/20/2023,339.309998,\r\n",
"6/21/2023,336.369995,\r\n",
"6/22/2023,334.119995,\r\n",
"6/23/2023,334.359985,\r\n",
"6/26/2023,333.720001,\r\n",
"6/27/2023,331.859985,\r\n",
"6/28/2023,334.660004,2393.250213\r\n",
"6/29/2023,334.709991,\r\n",
"6/30/2023,337.750000,\r\n",
"7/3/2023,339.190002,\r\n",
"7/5/2023,335.089996,\r\n",
"7/6/2023,337.299988,\r\n",
"7/7/2023,339.320007,\r\n",
"7/10/2023,334.600006,\r\n",
"7/11/2023,331.059998,\r\n",
"7/12/2023,336.600006,2407.250213\r\n",
"7/13/2023,339.559998,\r\n",
"7/14/2023,347.589996,\r\n",
"7/17/2023,345.679993,\r\n",
"7/18/2023,345.829987,\r\n",
"7/19/2023,361.750000,\r\n",
"7/20/2023,353.570007,\r\n",
"7/21/2023,349.149994,\r\n",
"7/24/2023,345.850006,\r\n",
"7/25/2023,347.109985,\r\n",
"7/26/2023,341.440002,\r\n",
"7/27/2023,340.480011,\r\n",
"7/28/2023,333.670013,\r\n",
"7/31/2023,336.920013,\r\n",
"8/1/2023,335.190002,\r\n",
"8/2/2023,333.630005,\r\n",
"8/3/2023,326.000000,\r\n",
"8/4/2023,331.880005,\r\n",
"8/7/2023,328.369995,\r\n",
"8/8/2023,326.959991,\r\n",
"8/9/2023,326.470001,\r\n",
"8/10/2023,326.019989,\r\n",
"8/11/2023,320.260010,\r\n",
"8/14/2023,321.390015,\r\n",
"8/15/2023,323.000000,\r\n",
"8/16/2023,320.799988,\r\n",
"8/17/2023,320.540009,\r\n",
"8/18/2023,314.489990,\r\n",
"8/21/2023,317.929993,\r\n",
"8/22/2023,325.500000,\r\n",
"8/23/2023,323.820007,\r\n",
"8/24/2023,332.850006,2347.120241\r\n",
"8/25/2023,321.470001,\r\n",
"8/28/2023,325.660004,2376.450262\r\n",
"8/29/2023,321.880005,\r\n",
"8/30/2023,328.670013,2423.980318\r\n",
"8/31/2023,329.200012,\r\n",
"9/1/2023,331.309998,\r\n",
"9/5/2023,329.000000,\r\n",
"9/6/2023,333.380005,\r\n",
"9/7/2023,331.290009,\r\n",
"9/8/2023,330.089996,\r\n",
"9/11/2023,337.239990,\r\n",
"9/12/2023,335.820007,\r\n",
"9/13/2023,331.309998,\r\n",
"9/14/2023,339.149994,\r\n",
"9/15/2023,336.920013,\r\n",
"9/18/2023,327.799988,\r\n",
"9/19/2023,326.170013,\r\n",
"9/20/2023,329.510010,\r\n",
"9/21/2023,319.260010,\r\n",
"9/22/2023,321.320007,\r\n",
"9/25/2023,316.589996,\r\n",
"9/26/2023,315.130005,\r\n",
"9/27/2023,312.299988,\r\n",
"9/28/2023,310.989990,\r\n",
"9/29/2023,317.750000,\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td><td><span>Balance</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-10-01\">Oct 01, 2018</time></td><td><div class=\"dni-plaintext\"><pre>114.750000</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-02\">Oct 02, 2018</time></td><td><div class=\"dni-plaintext\"><pre>115.300003</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-03\">Oct 03, 2018</time></td><td><div class=\"dni-plaintext\"><pre>115.419998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-04\">Oct 04, 2018</time></td><td><div class=\"dni-plaintext\"><pre>114.610001</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-05\">Oct 05, 2018</time></td><td><div class=\"dni-plaintext\"><pre>112.629997</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-08\">Oct 08, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.660004</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-09\">Oct 09, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.139999</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-10\">Oct 10, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.239998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-11\">Oct 11, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.349998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-12\">Oct 12, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.010002</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-15\">Oct 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.910004</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-16\">Oct 16, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.540001</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-17\">Oct 17, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.680000</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-18\">Oct 18, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.099998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-19\">Oct 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.930000</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-22\">Oct 22, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.320000</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-23\">Oct 23, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.769997</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-24\">Oct 24, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.410004</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-25\">Oct 25, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.550003</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-10-26\">Oct 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>105.690002</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td colspan=\"3\"><i>(1238 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var merged =\n",
" data.OrderedMerge(run,\n",
" // left key function\n",
" d => d.Date,\n",
" // right key function\n",
" r => r.Sell.Date,\n",
" // project result for when just the left side is available\n",
" d => new { d.Date, d.Price, Balance = (decimal?)null },\n",
" // project result for when just the right side is available\n",
" r => throw new(), // this should never happen\n",
" // project result for when both sides are available\n",
" (d, r) => new { d.Date, d.Price, Balance = (decimal?)r.Balance });\n",
"\n",
"merged.ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hang on! Why is the balance always `null`? What's going on here? Do we have a bug? Let's see if there is any value ever for balance:"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price,Balance\r\n",
"11/7/2018,109.440002,1033.750000\r\n",
"11/14/2018,108.099998,1038.699955\r\n",
"11/19/2018,108.269997,1068.219946\r\n",
"11/28/2018,107.889999,1129.119906\r\n",
"12/7/2018,108.379997,1154.719876\r\n",
"12/11/2018,109.800003,1209.719876\r\n",
"1/8/2019,103.040001,1183.649843\r\n",
"2/5/2019,106.059998,1208.509788\r\n",
"2/11/2019,106.199997,1228.419766\r\n",
"3/11/2019,110.989998,1248.549700\r\n",
"5/16/2019,126.750000,1273.149690\r\n",
"5/21/2019,127.430000,1282.249720\r\n",
"5/24/2019,126.910004,1285.149730\r\n",
"6/6/2019,126.440002,1295.749780\r\n",
"7/19/2019,140.220001,1337.779762\r\n",
"8/9/2019,138.610001,1352.269771\r\n",
"8/19/2019,137.850006,1359.289762\r\n",
"8/29/2019,137.250000,1381.889712\r\n",
"9/12/2019,137.850006,1392.389742\r\n",
"9/19/2019,140.300003,1437.089752\r\n",
"9/26/2019,139.440002,1456.489772\r\n",
"10/1/2019,139.660004,1472.589782\r\n",
"10/10/2019,138.490005,1494.989832\r\n",
"10/22/2019,138.970001,1500.189872\r\n",
"10/24/2019,139.389999,1525.289812\r\n",
"12/4/2019,150.139999,1551.789752\r\n",
"1/28/2020,163.779999,1575.459797\r\n",
"3/27/2020,151.750000,1431.279761\r\n",
"5/15/2020,179.059998,1443.439801\r\n",
"5/29/2020,182.729996,1463.679793\r\n",
"6/2/2020,184.250000,1477.359849\r\n",
"6/8/2020,185.940002,1503.919905\r\n",
"6/16/2020,192.889999,1570.399881\r\n",
"7/21/2020,213.660004,1634.729902\r\n",
"8/3/2020,211.520004,1723.529950\r\n",
"8/13/2020,209.440002,1741.769934\r\n",
"9/28/2020,210.880005,1708.009926\r\n",
"10/1/2020,213.490005,1741.129918\r\n",
"11/4/2020,214.020004,1742.489902\r\n",
"11/12/2020,217.210007,1781.049966\r\n",
"11/25/2020,215.110001,1810.889934\r\n",
"12/9/2020,215.160004,1819.369918\r\n",
"12/15/2020,215.169998,1846.569870\r\n",
"1/8/2021,218.679993,1857.929854\r\n",
"1/21/2021,224.699997,1907.769822\r\n",
"3/10/2021,237.000000,1904.409838\r\n",
"3/16/2021,236.279999,1914.969774\r\n",
"3/23/2021,237.490005,1954.409830\r\n",
"3/29/2021,236.589996,1994.729774\r\n",
"4/1/2021,238.470001,2034.249790\r\n",
"5/25/2021,251.770004,2050.489782\r\n",
"6/4/2021,247.759995,2070.809734\r\n",
"9/15/2021,303.260010,2099.849716\r\n",
"10/7/2021,295.179993,2091.799758\r\n",
"10/12/2021,295.339996,2108.739639\r\n",
"12/8/2021,335.309998,2114.499591\r\n",
"12/13/2021,340.679993,2152.119525\r\n",
"12/16/2021,335.709991,2167.059465\r\n",
"12/23/2021,332.750000,2238.279435\r\n",
"2/1/2022,310.410004,2145.579549\r\n",
"2/9/2022,309.869995,2213.199577\r\n",
"3/3/2022,302.890015,2205.149619\r\n",
"3/17/2022,293.290009,2198.149619\r\n",
"5/5/2022,285.540009,2120.309654\r\n",
"5/27/2022,268.480011,2075.999745\r\n",
"6/3/2022,270.309998,2117.019647\r\n",
"6/24/2022,261.809998,2126.859735\r\n",
"7/6/2022,263.750000,2176.139767\r\n",
"7/18/2022,259.750000,2252.619751\r\n",
"7/20/2022,259.899994,2271.179807\r\n",
"10/5/2022,245.990005,2027.579831\r\n",
"10/18/2022,243.240005,2046.299919\r\n",
"10/24/2022,243.759995,2100.059935\r\n",
"11/10/2022,235.429993,2138.399890\r\n",
"12/12/2022,247.449997,2160.399890\r\n",
"1/13/2023,237.000000,2097.519882\r\n",
"1/23/2023,241.100006,2156.079938\r\n",
"1/26/2023,243.649994,2238.609920\r\n",
"3/14/2023,256.750000,2256.769952\r\n",
"4/26/2023,296.700012,2373.650080\r\n",
"6/28/2023,334.660004,2393.250213\r\n",
"7/12/2023,336.600006,2407.250213\r\n",
"8/24/2023,332.850006,2347.120241\r\n",
"8/28/2023,325.660004,2376.450262\r\n",
"8/30/2023,328.670013,2423.980318\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td><td><span>Balance</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-12-07\">Dec 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.379997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1154.719876</pre></div></td></tr><tr><td><time datetime=\"2018-12-11\">Dec 11, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1209.719876</pre></div></td></tr><tr><td><time datetime=\"2019-01-08\">Jan 08, 2019</time></td><td><div class=\"dni-plaintext\"><pre>103.040001</pre></div></td><td><div class=\"dni-plaintext\"><pre>1183.649843</pre></div></td></tr><tr><td><time datetime=\"2019-02-05\">Feb 05, 2019</time></td><td><div class=\"dni-plaintext\"><pre>106.059998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1208.509788</pre></div></td></tr><tr><td><time datetime=\"2019-02-11\">Feb 11, 2019</time></td><td><div class=\"dni-plaintext\"><pre>106.199997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1228.419766</pre></div></td></tr><tr><td><time datetime=\"2019-03-11\">Mar 11, 2019</time></td><td><div class=\"dni-plaintext\"><pre>110.989998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1248.549700</pre></div></td></tr><tr><td><time datetime=\"2019-05-16\">May 16, 2019</time></td><td><div class=\"dni-plaintext\"><pre>126.750000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1273.149690</pre></div></td></tr><tr><td><time datetime=\"2019-05-21\">May 21, 2019</time></td><td><div class=\"dni-plaintext\"><pre>127.430000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1282.249720</pre></div></td></tr><tr><td><time datetime=\"2019-05-24\">May 24, 2019</time></td><td><div class=\"dni-plaintext\"><pre>126.910004</pre></div></td><td><div class=\"dni-plaintext\"><pre>1285.149730</pre></div></td></tr><tr><td><time datetime=\"2019-06-06\">Jun 06, 2019</time></td><td><div class=\"dni-plaintext\"><pre>126.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1295.749780</pre></div></td></tr><tr><td><time datetime=\"2019-07-19\">Jul 19, 2019</time></td><td><div class=\"dni-plaintext\"><pre>140.220001</pre></div></td><td><div class=\"dni-plaintext\"><pre>1337.779762</pre></div></td></tr><tr><td><time datetime=\"2019-08-09\">Aug 09, 2019</time></td><td><div class=\"dni-plaintext\"><pre>138.610001</pre></div></td><td><div class=\"dni-plaintext\"><pre>1352.269771</pre></div></td></tr><tr><td><time datetime=\"2019-08-19\">Aug 19, 2019</time></td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td><td><div class=\"dni-plaintext\"><pre>1359.289762</pre></div></td></tr><tr><td><time datetime=\"2019-08-29\">Aug 29, 2019</time></td><td><div class=\"dni-plaintext\"><pre>137.250000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1381.889712</pre></div></td></tr><tr><td><time datetime=\"2019-09-12\">Sep 12, 2019</time></td><td><div class=\"dni-plaintext\"><pre>137.850006</pre></div></td><td><div class=\"dni-plaintext\"><pre>1392.389742</pre></div></td></tr><tr><td><time datetime=\"2019-09-19\">Sep 19, 2019</time></td><td><div class=\"dni-plaintext\"><pre>140.300003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1437.089752</pre></div></td></tr><tr><td colspan=\"3\"><i>(65 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"merged.Where(e => e.Balance is not null)\n",
" .ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Ah there is balance data, but it starts from the beginning of November and then available on specific dates thereafter! What's going here is that there is no trade decision that can be made until there's 20 days worth of price action to build the moving average, so it would be more interesting to skip the beginning until things get interesting. What if we could skip to just before the first trade? But how do you get something _just before_? What if we could *look-ahead* into a sequence such that we can skip until we see that the balance is about to become non-null? MoreLINQ has [`Lead`] just for that. You give it an offset and it will give you the current element together with the element at the given offset from the current, thus enabling one to _peek_ into the sequence. So let's look-ahead by 2 elements and skip the beginning of the data until we start seeing the balance moving due to a trade action:\n",
"\n",
" [`Lead`]: https://morelinq.github.io/4.0/ref/api/html/Overload_MoreLinq_MoreEnumerable_Lead.htm"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price,Balance\r\n",
"11/5/2018,106.370003,\r\n",
"11/6/2018,107.379997,\r\n",
"11/7/2018,109.440002,1033.750000\r\n",
"11/8/2018,111.800003,\r\n",
"11/9/2018,110.849998,\r\n",
"11/12/2018,109.419998,\r\n",
"11/13/2018,107.550003,\r\n",
"11/14/2018,108.099998,1038.699955\r\n",
"11/15/2018,104.989998,\r\n",
"11/16/2018,107.080002,\r\n",
"11/19/2018,108.269997,1068.219946\r\n",
"11/20/2018,101.800003,\r\n",
"11/21/2018,103.599998,\r\n",
"11/23/2018,102.169998,\r\n",
"11/26/2018,104.790001,\r\n",
"11/27/2018,106.269997,\r\n",
"11/28/2018,107.889999,1129.119906\r\n",
"11/29/2018,110.330002,\r\n",
"11/30/2018,110.699997,\r\n",
"12/3/2018,113.000000,\r\n",
"12/4/2018,111.940002,\r\n",
"12/6/2018,105.820000,\r\n",
"12/7/2018,108.379997,1154.719876\r\n",
"12/10/2018,104.800003,\r\n",
"12/11/2018,109.800003,1209.719876\r\n",
"12/12/2018,110.889999,\r\n",
"12/13/2018,109.580002,\r\n",
"12/14/2018,108.250000,\r\n",
"12/17/2018,105.410004,\r\n",
"12/18/2018,103.750000,\r\n",
"12/19/2018,103.650002,\r\n",
"12/20/2018,103.050003,\r\n",
"12/21/2018,101.629997,\r\n",
"12/24/2018,97.680000,\r\n",
"12/26/2018,95.139999,\r\n",
"12/27/2018,99.300003,\r\n",
"12/28/2018,102.089996,\r\n",
"12/31/2018,101.290001,\r\n",
"1/2/2019,99.550003,\r\n",
"1/3/2019,100.099998,\r\n",
"1/4/2019,99.720001,\r\n",
"1/7/2019,101.639999,\r\n",
"1/8/2019,103.040001,1183.649843\r\n",
"1/9/2019,103.860001,\r\n",
"1/10/2019,103.220001,\r\n",
"1/11/2019,103.190002,\r\n",
"1/14/2019,101.900002,\r\n",
"1/15/2019,102.510002,\r\n",
"1/16/2019,105.260002,\r\n",
"1/17/2019,105.000000,\r\n",
"1/18/2019,107.459999,\r\n",
"1/22/2019,106.750000,\r\n",
"1/23/2019,106.120003,\r\n",
"1/24/2019,106.860001,\r\n",
"1/25/2019,107.239998,\r\n",
"1/28/2019,106.260002,\r\n",
"1/29/2019,104.879997,\r\n",
"1/30/2019,104.620003,\r\n",
"1/31/2019,103.800003,\r\n",
"2/1/2019,103.779999,\r\n",
"2/4/2019,102.870003,\r\n",
"2/5/2019,106.059998,1208.509788\r\n",
"2/6/2019,107.000000,\r\n",
"2/7/2019,105.190002,\r\n",
"2/8/2019,104.389999,\r\n",
"2/11/2019,106.199997,1228.419766\r\n",
"2/12/2019,106.139999,\r\n",
"2/13/2019,107.500000,\r\n",
"2/14/2019,106.309998,\r\n",
"2/15/2019,107.910004,\r\n",
"2/19/2019,107.790001,\r\n",
"2/20/2019,107.860001,\r\n",
"2/21/2019,106.900002,\r\n",
"2/22/2019,110.050003,\r\n",
"2/25/2019,111.760002,\r\n",
"2/26/2019,111.260002,\r\n",
"2/27/2019,111.690002,\r\n",
"2/28/2019,112.040001,\r\n",
"3/1/2019,112.889999,\r\n",
"3/4/2019,113.019997,\r\n",
"3/5/2019,112.250000,\r\n",
"3/6/2019,111.870003,\r\n",
"3/7/2019,111.400002,\r\n",
"3/8/2019,109.160004,\r\n",
"3/11/2019,110.989998,1248.549700\r\n",
"3/12/2019,112.820000,\r\n",
"3/13/2019,114.129997,\r\n",
"3/14/2019,114.540001,\r\n",
"3/15/2019,115.339996,\r\n",
"3/18/2019,116.169998,\r\n",
"3/19/2019,118.089996,\r\n",
"3/20/2019,117.389999,\r\n",
"3/21/2019,117.139999,\r\n",
"3/22/2019,119.500000,\r\n",
"3/25/2019,116.559998,\r\n",
"3/26/2019,118.620003,\r\n",
"3/27/2019,117.879997,\r\n",
"3/28/2019,117.440002,\r\n",
"3/29/2019,118.070000,\r\n",
"4/1/2019,118.949997,\r\n",
"4/2/2019,119.059998,\r\n",
"4/3/2019,119.860001,\r\n",
"4/4/2019,120.099998,\r\n",
"4/5/2019,119.389999,\r\n",
"4/8/2019,119.809998,\r\n",
"4/9/2019,118.629997,\r\n",
"4/10/2019,119.760002,\r\n",
"4/11/2019,120.540001,\r\n",
"4/12/2019,120.639999,\r\n",
"4/15/2019,120.940002,\r\n",
"4/16/2019,121.639999,\r\n",
"4/17/2019,121.239998,\r\n",
"4/18/2019,122.190002,\r\n",
"4/22/2019,122.620003,\r\n",
"4/23/2019,124.099998,\r\n",
"4/24/2019,125.790001,\r\n",
"4/25/2019,130.059998,\r\n",
"4/26/2019,129.699997,\r\n",
"4/29/2019,129.899994,\r\n",
"4/30/2019,129.809998,\r\n",
"5/1/2019,130.529999,\r\n",
"5/2/2019,127.980003,\r\n",
"5/3/2019,127.360001,\r\n",
"5/6/2019,126.389999,\r\n",
"5/7/2019,126.459999,\r\n",
"5/8/2019,125.440002,\r\n",
"5/9/2019,124.290001,\r\n",
"5/10/2019,124.910004,\r\n",
"5/13/2019,124.110001,\r\n",
"5/14/2019,123.870003,\r\n",
"5/15/2019,124.260002,\r\n",
"5/16/2019,126.750000,1273.149690\r\n",
"5/17/2019,128.309998,\r\n",
"5/20/2019,126.519997,\r\n",
"5/21/2019,127.430000,1282.249720\r\n",
"5/22/2019,126.620003,\r\n",
"5/23/2019,126.199997,\r\n",
"5/24/2019,126.910004,1285.149730\r\n",
"5/28/2019,126.980003,\r\n",
"5/29/2019,125.379997,\r\n",
"5/30/2019,125.260002,\r\n",
"5/31/2019,124.230003,\r\n",
"6/3/2019,123.849998,\r\n",
"6/4/2019,121.279999,\r\n",
"6/5/2019,124.949997,\r\n",
"6/6/2019,126.440002,1295.749780\r\n",
"6/7/2019,129.190002,\r\n",
"6/10/2019,132.399994,\r\n",
"6/11/2019,133.880005,\r\n",
"6/12/2019,131.399994,\r\n",
"6/13/2019,131.979996,\r\n",
"6/14/2019,132.259995,\r\n",
"6/17/2019,132.630005,\r\n",
"6/18/2019,134.190002,\r\n",
"6/19/2019,135.000000,\r\n",
"6/20/2019,137.449997,\r\n",
"6/21/2019,136.580002,\r\n",
"6/24/2019,137.000000,\r\n",
"6/25/2019,137.250000,\r\n",
"6/26/2019,134.350006,\r\n",
"6/27/2019,134.139999,\r\n",
"6/28/2019,134.570007,\r\n",
"7/1/2019,136.630005,\r\n",
"7/2/2019,136.119995,\r\n",
"7/3/2019,136.800003,\r\n",
"7/5/2019,135.940002,\r\n",
"7/8/2019,136.399994,\r\n",
"7/9/2019,136.000000,\r\n",
"7/10/2019,137.130005,\r\n",
"7/11/2019,138.199997,\r\n",
"7/12/2019,138.850006,\r\n",
"7/15/2019,139.440002,\r\n",
"7/16/2019,138.960007,\r\n",
"7/17/2019,137.699997,\r\n",
"7/18/2019,135.550003,\r\n",
"7/19/2019,140.220001,1337.779762\r\n",
"7/22/2019,137.410004,\r\n",
"7/23/2019,139.759995,\r\n",
"7/24/2019,138.899994,\r\n",
"7/25/2019,140.429993,\r\n",
"7/26/2019,140.369995,\r\n",
"7/29/2019,141.500000,\r\n",
"7/30/2019,140.139999,\r\n",
"7/31/2019,140.330002,\r\n",
"8/1/2019,137.000000,\r\n",
"8/2/2019,138.089996,\r\n",
"8/5/2019,133.300003,\r\n",
"8/6/2019,133.800003,\r\n",
"8/7/2019,133.789993,\r\n",
"8/8/2019,136.600006,\r\n",
"8/9/2019,138.610001,1352.269771\r\n",
"8/12/2019,137.070007,\r\n",
"8/13/2019,136.050003,\r\n",
"8/14/2019,136.360001,\r\n",
"8/15/2019,134.389999,\r\n",
"8/16/2019,134.880005,\r\n",
"8/19/2019,137.850006,1359.289762\r\n",
"8/20/2019,138.210007,\r\n",
"8/21/2019,138.550003,\r\n",
"8/22/2019,138.660004,\r\n",
"8/23/2019,137.190002,\r\n",
"8/26/2019,134.990005,\r\n",
"8/27/2019,136.389999,\r\n",
"8/28/2019,134.880005,\r\n",
"8/29/2019,137.250000,1381.889712\r\n",
"8/30/2019,139.149994,\r\n",
"9/3/2019,136.610001,\r\n",
"9/4/2019,137.300003,\r\n",
"9/5/2019,139.110001,\r\n",
"9/6/2019,140.029999,\r\n",
"9/9/2019,139.589996,\r\n",
"9/10/2019,136.800003,\r\n",
"9/11/2019,135.910004,\r\n",
"9/12/2019,137.850006,1392.389742\r\n",
"9/13/2019,137.779999,\r\n",
"9/16/2019,135.830002,\r\n",
"9/17/2019,136.960007,\r\n",
"9/18/2019,137.360001,\r\n",
"9/19/2019,140.300003,1437.089752\r\n",
"9/20/2019,141.009995,\r\n",
"9/23/2019,139.229996,\r\n",
"9/24/2019,140.360001,\r\n",
"9/25/2019,137.500000,\r\n",
"9/26/2019,139.440002,1456.489772\r\n",
"9/27/2019,140.149994,\r\n",
"9/30/2019,138.050003,\r\n",
"10/1/2019,139.660004,1472.589782\r\n",
"10/2/2019,136.250000,\r\n",
"10/3/2019,134.949997,\r\n",
"10/4/2019,136.750000,\r\n",
"10/7/2019,137.139999,\r\n",
"10/8/2019,137.080002,\r\n",
"10/9/2019,137.460007,\r\n",
"10/10/2019,138.490005,1494.989832\r\n",
"10/11/2019,140.119995,\r\n",
"10/14/2019,139.690002,\r\n",
"10/15/2019,140.059998,\r\n",
"10/16/2019,140.789993,\r\n",
"10/17/2019,140.949997,\r\n",
"10/18/2019,139.759995,\r\n",
"10/21/2019,138.449997,\r\n",
"10/22/2019,138.970001,1500.189872\r\n",
"10/23/2019,136.880005,\r\n",
"10/24/2019,139.389999,1525.289812\r\n",
"10/25/2019,139.339996,\r\n",
"10/28/2019,144.399994,\r\n",
"10/29/2019,144.080002,\r\n",
"10/30/2019,143.520004,\r\n",
"10/31/2019,144.899994,\r\n",
"11/1/2019,144.259995,\r\n",
"11/4/2019,144.830002,\r\n",
"11/5/2019,144.970001,\r\n",
"11/6/2019,144.369995,\r\n",
"11/7/2019,143.839996,\r\n",
"11/8/2019,143.979996,\r\n",
"11/11/2019,145.339996,\r\n",
"11/12/2019,146.279999,\r\n",
"11/13/2019,146.740005,\r\n",
"11/14/2019,147.020004,\r\n",
"11/15/2019,148.929993,\r\n",
"11/18/2019,150.070007,\r\n",
"11/19/2019,150.880005,\r\n",
"11/20/2019,150.309998,\r\n",
"11/21/2019,149.399994,\r\n",
"11/22/2019,150.070007,\r\n",
"11/25/2019,150.000000,\r\n",
"11/26/2019,151.360001,\r\n",
"11/27/2019,152.330002,\r\n",
"11/29/2019,152.100006,\r\n",
"12/2/2019,151.809998,\r\n",
"12/3/2019,147.490005,\r\n",
"12/4/2019,150.139999,1551.789752\r\n",
"12/5/2019,150.050003,\r\n",
"12/6/2019,150.990005,\r\n",
"12/9/2019,151.070007,\r\n",
"12/10/2019,151.289993,\r\n",
"12/11/2019,151.539993,\r\n",
"12/12/2019,151.649994,\r\n",
"12/13/2019,153.000000,\r\n",
"12/16/2019,155.110001,\r\n",
"12/17/2019,155.449997,\r\n",
"12/18/2019,154.300003,\r\n",
"12/19/2019,154.000000,\r\n",
"12/20/2019,157.350006,\r\n",
"12/23/2019,158.119995,\r\n",
"12/24/2019,157.479996,\r\n",
"12/26/2019,157.559998,\r\n",
"12/27/2019,159.449997,\r\n",
"12/30/2019,158.990005,\r\n",
"12/31/2019,156.770004,\r\n",
"1/2/2020,158.779999,\r\n",
"1/3/2020,158.320007,\r\n",
"1/6/2020,157.080002,\r\n",
"1/7/2020,159.320007,\r\n",
"1/8/2020,158.929993,\r\n",
"1/9/2020,161.839996,\r\n",
"1/10/2020,162.820007,\r\n",
"1/13/2020,161.759995,\r\n",
"1/14/2020,163.389999,\r\n",
"1/15/2020,162.619995,\r\n",
"1/16/2020,164.350006,\r\n",
"1/17/2020,167.419998,\r\n",
"1/21/2020,166.679993,\r\n",
"1/22/2020,167.399994,\r\n",
"1/23/2020,166.190002,\r\n",
"1/24/2020,167.509995,\r\n",
"1/27/2020,161.149994,\r\n",
"1/28/2020,163.779999,1575.459797\r\n",
"1/29/2020,167.839996,\r\n",
"1/30/2020,174.050003,\r\n",
"1/31/2020,172.210007,\r\n",
"2/3/2020,170.429993,\r\n",
"2/4/2020,177.139999,\r\n",
"2/5/2020,184.029999,\r\n",
"2/6/2020,180.970001,\r\n",
"2/7/2020,182.850006,\r\n",
"2/10/2020,183.580002,\r\n",
"2/11/2020,190.649994,\r\n",
"2/12/2020,185.580002,\r\n",
"2/13/2020,183.080002,\r\n",
"2/14/2020,183.250000,\r\n",
"2/18/2020,185.610001,\r\n",
"2/19/2020,188.059998,\r\n",
"2/20/2020,186.949997,\r\n",
"2/21/2020,183.169998,\r\n",
"2/24/2020,167.770004,\r\n",
"2/25/2020,174.199997,\r\n",
"2/26/2020,169.710007,\r\n",
"2/27/2020,163.320007,\r\n",
"2/28/2020,152.410004,\r\n",
"3/2/2020,165.309998,\r\n",
"3/3/2020,173.800003,\r\n",
"3/4/2020,168.490005,\r\n",
"3/5/2020,166.050003,\r\n",
"3/6/2020,162.610001,\r\n",
"3/9/2020,151.000000,\r\n",
"3/10/2020,158.160004,\r\n",
"3/11/2020,157.130005,\r\n",
"3/12/2020,145.300003,\r\n",
"3/13/2020,147.500000,\r\n",
"3/16/2020,140.000000,\r\n",
"3/17/2020,140.000000,\r\n",
"3/18/2020,138.000000,\r\n",
"3/19/2020,142.770004,\r\n",
"3/20/2020,146.000000,\r\n",
"3/23/2020,137.009995,\r\n",
"3/24/2020,143.750000,\r\n",
"3/25/2020,148.910004,\r\n",
"3/26/2020,148.399994,\r\n",
"3/27/2020,151.750000,1431.279761\r\n",
"3/30/2020,152.440002,\r\n",
"3/31/2020,159.399994,\r\n",
"4/1/2020,153.000000,\r\n",
"4/2/2020,151.860001,\r\n",
"4/3/2020,155.100006,\r\n",
"4/6/2020,160.320007,\r\n",
"4/7/2020,169.589996,\r\n",
"4/8/2020,165.669998,\r\n",
"4/9/2020,166.360001,\r\n",
"4/13/2020,164.350006,\r\n",
"4/14/2020,169.000000,\r\n",
"4/15/2020,171.199997,\r\n",
"4/16/2020,174.300003,\r\n",
"4/17/2020,179.500000,\r\n",
"4/20/2020,176.630005,\r\n",
"4/21/2020,173.500000,\r\n",
"4/22/2020,171.389999,\r\n",
"4/23/2020,174.110001,\r\n",
"4/24/2020,172.059998,\r\n",
"4/27/2020,176.589996,\r\n",
"4/28/2020,175.589996,\r\n",
"4/29/2020,173.220001,\r\n",
"4/30/2020,180.000000,\r\n",
"5/1/2020,175.800003,\r\n",
"5/4/2020,174.490005,\r\n",
"5/5/2020,180.619995,\r\n",
"5/6/2020,182.080002,\r\n",
"5/7/2020,184.169998,\r\n",
"5/8/2020,184.979996,\r\n",
"5/11/2020,183.149994,\r\n",
"5/12/2020,186.800003,\r\n",
"5/13/2020,182.550003,\r\n",
"5/14/2020,177.539993,\r\n",
"5/15/2020,179.059998,1443.439801\r\n",
"5/18/2020,185.750000,\r\n",
"5/19/2020,185.029999,\r\n",
"5/20/2020,184.809998,\r\n",
"5/21/2020,185.399994,\r\n",
"5/22/2020,183.190002,\r\n",
"5/26/2020,186.339996,\r\n",
"5/27/2020,180.199997,\r\n",
"5/28/2020,180.740005,\r\n",
"5/29/2020,182.729996,1463.679793\r\n",
"6/1/2020,182.539993,\r\n",
"6/2/2020,184.250000,1477.359849\r\n",
"6/3/2020,184.820007,\r\n",
"6/4/2020,184.300003,\r\n",
"6/5/2020,182.619995,\r\n",
"6/8/2020,185.940002,1503.919905\r\n",
"6/9/2020,188.000000,\r\n",
"6/10/2020,191.130005,\r\n",
"6/11/2020,193.130005,\r\n",
"6/12/2020,190.539993,\r\n",
"6/15/2020,184.580002,\r\n",
"6/16/2020,192.889999,1570.399881\r\n",
"6/17/2020,195.029999,\r\n",
"6/18/2020,194.000000,\r\n",
"6/19/2020,198.589996,\r\n",
"6/22/2020,195.789993,\r\n",
"6/23/2020,202.089996,\r\n",
"6/24/2020,201.600006,\r\n",
"6/25/2020,197.800003,\r\n",
"6/26/2020,199.729996,\r\n",
"6/29/2020,195.779999,\r\n",
"6/30/2020,197.880005,\r\n",
"7/1/2020,203.139999,\r\n",
"7/2/2020,205.679993,\r\n",
"7/6/2020,208.830002,\r\n",
"7/7/2020,210.449997,\r\n",
"7/8/2020,210.070007,\r\n",
"7/9/2020,216.330002,\r\n",
"7/10/2020,213.619995,\r\n",
"7/13/2020,214.479996,\r\n",
"7/14/2020,206.130005,\r\n",
"7/15/2020,209.559998,\r\n",
"7/16/2020,205.399994,\r\n",
"7/17/2020,204.470001,\r\n",
"7/20/2020,205.000000,\r\n",
"7/21/2020,213.660004,1634.729902\r\n",
"7/22/2020,209.199997,\r\n",
"7/23/2020,207.190002,\r\n",
"7/24/2020,200.419998,\r\n",
"7/27/2020,201.470001,\r\n",
"7/28/2020,203.610001,\r\n",
"7/29/2020,202.500000,\r\n",
"7/30/2020,201.000000,\r\n",
"7/31/2020,204.399994,\r\n",
"8/3/2020,211.520004,1723.529950\r\n",
"8/4/2020,214.169998,\r\n",
"8/5/2020,214.899994,\r\n",
"8/6/2020,212.339996,\r\n",
"8/7/2020,214.850006,\r\n",
"8/10/2020,211.669998,\r\n",
"8/11/2020,207.160004,\r\n",
"8/12/2020,205.289993,\r\n",
"8/13/2020,209.440002,1741.769934\r\n",
"8/14/2020,208.759995,\r\n",
"8/17/2020,209.600006,\r\n",
"8/18/2020,210.529999,\r\n",
"8/19/2020,211.490005,\r\n",
"8/20/2020,209.539993,\r\n",
"8/21/2020,213.860001,\r\n",
"8/24/2020,214.789993,\r\n",
"8/25/2020,213.100006,\r\n",
"8/26/2020,217.880005,\r\n",
"8/27/2020,222.889999,\r\n",
"8/28/2020,228.179993,\r\n",
"8/31/2020,227.000000,\r\n",
"9/1/2020,225.509995,\r\n",
"9/2/2020,227.970001,\r\n",
"9/3/2020,229.270004,\r\n",
"9/4/2020,215.100006,\r\n",
"9/8/2020,206.500000,\r\n",
"9/9/2020,207.600006,\r\n",
"9/10/2020,213.399994,\r\n",
"9/11/2020,207.199997,\r\n",
"9/14/2020,204.240005,\r\n",
"9/15/2020,208.419998,\r\n",
"9/16/2020,210.619995,\r\n",
"9/17/2020,200.050003,\r\n",
"9/18/2020,202.800003,\r\n",
"9/21/2020,197.190002,\r\n",
"9/22/2020,205.059998,\r\n",
"9/23/2020,207.899994,\r\n",
"9/24/2020,199.850006,\r\n",
"9/25/2020,203.550003,\r\n",
"9/28/2020,210.880005,1708.009926\r\n",
"9/29/2020,209.350006,\r\n",
"9/30/2020,207.729996,\r\n",
"10/1/2020,213.490005,1741.129918\r\n",
"10/2/2020,208.000000,\r\n",
"10/5/2020,207.220001,\r\n",
"10/6/2020,208.820007,\r\n",
"10/7/2020,207.059998,\r\n",
"10/8/2020,210.509995,\r\n",
"10/9/2020,211.229996,\r\n",
"10/12/2020,218.789993,\r\n",
"10/13/2020,222.720001,\r\n",
"10/14/2020,223.000000,\r\n",
"10/15/2020,217.100006,\r\n",
"10/16/2020,220.149994,\r\n",
"10/19/2020,220.419998,\r\n",
"10/20/2020,215.800003,\r\n",
"10/21/2020,213.119995,\r\n",
"10/22/2020,213.929993,\r\n",
"10/23/2020,215.029999,\r\n",
"10/26/2020,213.850006,\r\n",
"10/27/2020,211.589996,\r\n",
"10/28/2020,207.669998,\r\n",
"10/29/2020,204.070007,\r\n",
"10/30/2020,203.500000,\r\n",
"11/2/2020,204.289993,\r\n",
"11/3/2020,203.889999,\r\n",
"11/4/2020,214.020004,1742.489902\r\n",
"11/5/2020,222.039993,\r\n",
"11/6/2020,222.259995,\r\n",
"11/9/2020,224.440002,\r\n",
"11/10/2020,214.500000,\r\n",
"11/11/2020,212.389999,\r\n",
"11/12/2020,217.210007,1781.049966\r\n",
"11/13/2020,216.360001,\r\n",
"11/16/2020,214.869995,\r\n",
"11/17/2020,216.100006,\r\n",
"11/18/2020,213.649994,\r\n",
"11/19/2020,211.380005,\r\n",
"11/20/2020,212.199997,\r\n",
"11/23/2020,210.949997,\r\n",
"11/24/2020,209.589996,\r\n",
"11/25/2020,215.110001,1810.889934\r\n",
"11/27/2020,214.850006,\r\n",
"11/30/2020,214.100006,\r\n",
"12/1/2020,214.509995,\r\n",
"12/2/2020,214.880005,\r\n",
"12/3/2020,214.610001,\r\n",
"12/4/2020,214.220001,\r\n",
"12/7/2020,214.369995,\r\n",
"12/8/2020,213.970001,\r\n",
"12/9/2020,215.160004,1819.369918\r\n",
"12/10/2020,211.770004,\r\n",
"12/11/2020,210.050003,\r\n",
"12/14/2020,213.100006,\r\n",
"12/15/2020,215.169998,1846.569870\r\n",
"12/16/2020,214.750000,\r\n",
"12/17/2020,219.869995,\r\n",
"12/18/2020,218.589996,\r\n",
"12/21/2020,217.550003,\r\n",
"12/22/2020,222.690002,\r\n",
"12/23/2020,223.110001,\r\n",
"12/24/2020,221.419998,\r\n",
"12/28/2020,224.449997,\r\n",
"12/29/2020,226.309998,\r\n",
"12/30/2020,225.229996,\r\n",
"12/31/2020,221.699997,\r\n",
"1/4/2021,222.529999,\r\n",
"1/5/2021,217.259995,\r\n",
"1/6/2021,212.169998,\r\n",
"1/7/2021,214.039993,\r\n",
"1/8/2021,218.679993,1857.929854\r\n",
"1/11/2021,218.470001,\r\n",
"1/12/2021,216.500000,\r\n",
"1/13/2021,214.020004,\r\n",
"1/14/2021,215.910004,\r\n",
"1/15/2021,213.520004,\r\n",
"1/19/2021,213.750000,\r\n",
"1/20/2021,217.699997,\r\n",
"1/21/2021,224.699997,1907.769822\r\n",
"1/22/2021,227.080002,\r\n",
"1/25/2021,229.119995,\r\n",
"1/26/2021,231.860001,\r\n",
"1/27/2021,238.000000,\r\n",
"1/28/2021,235.610001,\r\n",
"1/29/2021,235.990005,\r\n",
"2/1/2021,235.059998,\r\n",
"2/2/2021,241.300003,\r\n",
"2/3/2021,239.570007,\r\n",
"2/4/2021,242.660004,\r\n",
"2/5/2021,242.229996,\r\n",
"2/8/2021,243.149994,\r\n",
"2/9/2021,241.869995,\r\n",
"2/10/2021,245.000000,\r\n",
"2/11/2021,244.779999,\r\n",
"2/12/2021,243.929993,\r\n",
"2/16/2021,245.029999,\r\n",
"2/17/2021,241.320007,\r\n",
"2/18/2021,241.800003,\r\n",
"2/19/2021,243.750000,\r\n",
"2/22/2021,237.419998,\r\n",
"2/23/2021,230.330002,\r\n",
"2/24/2021,230.009995,\r\n",
"2/25/2021,232.080002,\r\n",
"2/26/2021,231.529999,\r\n",
"3/1/2021,235.899994,\r\n",
"3/2/2021,237.009995,\r\n",
"3/3/2021,232.160004,\r\n",
"3/4/2021,226.740005,\r\n",
"3/5/2021,229.520004,\r\n",
"3/8/2021,231.369995,\r\n",
"3/9/2021,232.880005,\r\n",
"3/10/2021,237.000000,1904.409838\r\n",
"3/11/2021,234.960007,\r\n",
"3/12/2021,234.009995,\r\n",
"3/15/2021,234.960007,\r\n",
"3/16/2021,236.279999,1914.969774\r\n",
"3/17/2021,236.149994,\r\n",
"3/18/2021,232.559998,\r\n",
"3/19/2021,231.020004,\r\n",
"3/22/2021,230.270004,\r\n",
"3/23/2021,237.490005,1954.409830\r\n",
"3/24/2021,237.850006,\r\n",
"3/25/2021,235.300003,\r\n",
"3/26/2021,231.550003,\r\n",
"3/29/2021,236.589996,1994.729774\r\n",
"3/30/2021,233.529999,\r\n",
"3/31/2021,232.910004,\r\n",
"4/1/2021,238.470001,2034.249790\r\n",
"4/5/2021,242.759995,\r\n",
"4/6/2021,247.610001,\r\n",
"4/7/2021,247.809998,\r\n",
"4/8/2021,252.770004,\r\n",
"4/9/2021,252.869995,\r\n",
"4/12/2021,254.710007,\r\n",
"4/13/2021,257.260010,\r\n",
"4/14/2021,257.480011,\r\n",
"4/15/2021,257.929993,\r\n",
"4/16/2021,259.470001,\r\n",
"4/19/2021,260.190002,\r\n",
"4/20/2021,257.820007,\r\n",
"4/21/2021,258.940002,\r\n",
"4/22/2021,260.209991,\r\n",
"4/23/2021,257.880005,\r\n",
"4/26/2021,261.660004,\r\n",
"4/27/2021,261.579987,\r\n",
"4/28/2021,256.079987,\r\n",
"4/29/2021,255.460007,\r\n",
"4/30/2021,249.740005,\r\n",
"5/3/2021,253.399994,\r\n",
"5/4/2021,250.970001,\r\n",
"5/5/2021,249.059998,\r\n",
"5/6/2021,246.449997,\r\n",
"5/7/2021,252.149994,\r\n",
"5/10/2021,250.869995,\r\n",
"5/11/2021,244.550003,\r\n",
"5/12/2021,242.169998,\r\n",
"5/13/2021,241.800003,\r\n",
"5/14/2021,245.580002,\r\n",
"5/17/2021,246.550003,\r\n",
"5/18/2021,246.270004,\r\n",
"5/19/2021,239.309998,\r\n",
"5/20/2021,243.960007,\r\n",
"5/21/2021,247.570007,\r\n",
"5/24/2021,247.789993,\r\n",
"5/25/2021,251.770004,2050.489782\r\n",
"5/26/2021,251.429993,\r\n",
"5/27/2021,251.169998,\r\n",
"5/28/2021,251.000000,\r\n",
"6/1/2021,251.229996,\r\n",
"6/2/2021,248.130005,\r\n",
"6/3/2021,245.220001,\r\n",
"6/4/2021,247.759995,2070.809734\r\n",
"6/7/2021,249.979996,\r\n",
"6/8/2021,255.160004,\r\n",
"6/9/2021,253.809998,\r\n",
"6/10/2021,254.289993,\r\n",
"6/11/2021,257.989990,\r\n",
"6/14/2021,257.899994,\r\n",
"6/15/2021,259.769989,\r\n",
"6/16/2021,259.399994,\r\n",
"6/17/2021,256.070007,\r\n",
"6/18/2021,259.630005,\r\n",
"6/21/2021,259.820007,\r\n",
"6/22/2021,262.720001,\r\n",
"6/23/2021,265.989990,\r\n",
"6/24/2021,266.160004,\r\n",
"6/25/2021,266.230011,\r\n",
"6/28/2021,266.190002,\r\n",
"6/29/2021,268.869995,\r\n",
"6/30/2021,270.690002,\r\n",
"7/1/2021,269.609985,\r\n",
"7/2/2021,272.820007,\r\n",
"7/6/2021,278.029999,\r\n",
"7/7/2021,279.399994,\r\n",
"7/8/2021,276.899994,\r\n",
"7/9/2021,275.720001,\r\n",
"7/12/2021,279.160004,\r\n",
"7/13/2021,277.519989,\r\n",
"7/14/2021,282.350006,\r\n",
"7/15/2021,282.000000,\r\n",
"7/16/2021,282.070007,\r\n",
"7/19/2021,278.929993,\r\n",
"7/20/2021,278.029999,\r\n",
"7/21/2021,278.899994,\r\n",
"7/22/2021,283.839996,\r\n",
"7/23/2021,287.369995,\r\n",
"7/26/2021,289.000000,\r\n",
"7/27/2021,289.429993,\r\n",
"7/28/2021,288.989990,\r\n",
"7/29/2021,286.239990,\r\n",
"7/30/2021,285.170013,\r\n",
"8/2/2021,286.359985,\r\n",
"8/3/2021,285.420013,\r\n",
"8/4/2021,286.220001,\r\n",
"8/5/2021,286.880005,\r\n",
"8/6/2021,288.510010,\r\n",
"8/9/2021,289.750000,\r\n",
"8/10/2021,288.799988,\r\n",
"8/11/2021,287.209991,\r\n",
"8/12/2021,286.630005,\r\n",
"8/13/2021,289.480011,\r\n",
"8/16/2021,293.190002,\r\n",
"8/17/2021,292.390015,\r\n",
"8/18/2021,292.040009,\r\n",
"8/19/2021,288.690002,\r\n",
"8/20/2021,299.720001,\r\n",
"8/23/2021,303.250000,\r\n",
"8/24/2021,305.019989,\r\n",
"8/25/2021,304.299988,\r\n",
"8/26/2021,300.989990,\r\n",
"8/27/2021,298.989990,\r\n",
"8/30/2021,301.119995,\r\n",
"8/31/2021,304.420013,\r\n",
"9/1/2021,302.869995,\r\n",
"9/2/2021,302.200012,\r\n",
"9/3/2021,300.989990,\r\n",
"9/7/2021,301.010010,\r\n",
"9/8/2021,299.779999,\r\n",
"9/9/2021,300.820007,\r\n",
"9/10/2021,298.420013,\r\n",
"9/13/2021,297.549988,\r\n",
"9/14/2021,299.559998,\r\n",
"9/15/2021,303.260010,2099.849716\r\n",
"9/16/2021,303.760010,\r\n",
"9/17/2021,304.170013,\r\n",
"9/20/2021,296.329987,\r\n",
"9/21/2021,295.690002,\r\n",
"9/22/2021,296.730011,\r\n",
"9/23/2021,298.850006,\r\n",
"9/24/2021,298.230011,\r\n",
"9/27/2021,296.140015,\r\n",
"9/28/2021,289.799988,\r\n",
"9/29/2021,285.100006,\r\n",
"9/30/2021,285.709991,\r\n",
"10/1/2021,282.119995,\r\n",
"10/4/2021,287.399994,\r\n",
"10/5/2021,284.049988,\r\n",
"10/6/2021,285.779999,\r\n",
"10/7/2021,295.179993,2091.799758\r\n",
"10/8/2021,296.220001,\r\n",
"10/11/2021,292.920013,\r\n",
"10/12/2021,295.339996,2108.739639\r\n",
"10/13/2021,294.910004,\r\n",
"10/14/2021,299.209991,\r\n",
"10/15/2021,302.339996,\r\n",
"10/18/2021,303.570007,\r\n",
"10/19/2021,308.350006,\r\n",
"10/20/2021,309.209991,\r\n",
"10/21/2021,307.170013,\r\n",
"10/22/2021,310.399994,\r\n",
"10/25/2021,309.359985,\r\n",
"10/26/2021,311.000000,\r\n",
"10/27/2021,316.000000,\r\n",
"10/28/2021,324.329987,\r\n",
"10/29/2021,324.130005,\r\n",
"11/1/2021,331.359985,\r\n",
"11/2/2021,330.309998,\r\n",
"11/3/2021,333.899994,\r\n",
"11/4/2021,332.890015,\r\n",
"11/5/2021,338.510010,\r\n",
"11/8/2021,337.299988,\r\n",
"11/9/2021,337.109985,\r\n",
"11/10/2021,334.570007,\r\n",
"11/11/2021,331.250000,\r\n",
"11/12/2021,333.920013,\r\n",
"11/15/2021,337.540009,\r\n",
"11/16/2021,335.679993,\r\n",
"11/17/2021,338.940002,\r\n",
"11/18/2021,338.179993,\r\n",
"11/19/2021,342.640015,\r\n",
"11/22/2021,344.619995,\r\n",
"11/23/2021,337.049988,\r\n",
"11/24/2021,336.279999,\r\n",
"11/26/2021,334.350006,\r\n",
"11/29/2021,334.940002,\r\n",
"11/30/2021,335.320007,\r\n",
"12/1/2021,335.130005,\r\n",
"12/2/2021,330.299988,\r\n",
"12/3/2021,331.989990,\r\n",
"12/6/2021,323.950012,\r\n",
"12/7/2021,331.640015,\r\n",
"12/8/2021,335.309998,2114.499591\r\n",
"12/9/2021,334.410004,\r\n",
"12/10/2021,334.980011,\r\n",
"12/13/2021,340.679993,2152.119525\r\n",
"12/14/2021,333.220001,\r\n",
"12/15/2021,328.609985,\r\n",
"12/16/2021,335.709991,2167.059465\r\n",
"12/17/2021,320.880005,\r\n",
"12/20/2021,320.049988,\r\n",
"12/21/2021,323.290009,\r\n",
"12/22/2021,328.299988,\r\n",
"12/23/2021,332.750000,2238.279435\r\n",
"12/27/2021,335.459991,\r\n",
"12/28/2021,343.149994,\r\n",
"12/29/2021,341.299988,\r\n",
"12/30/2021,341.910004,\r\n",
"12/31/2021,338.510010,\r\n",
"1/3/2022,335.350006,\r\n",
"1/4/2022,334.829987,\r\n",
"1/5/2022,325.859985,\r\n",
"1/6/2022,313.149994,\r\n",
"1/7/2022,314.149994,\r\n",
"1/10/2022,309.489990,\r\n",
"1/11/2022,313.380005,\r\n",
"1/12/2022,319.670013,\r\n",
"1/13/2022,320.470001,\r\n",
"1/14/2022,304.250000,\r\n",
"1/18/2022,304.070007,\r\n",
"1/19/2022,306.290009,\r\n",
"1/20/2022,309.070007,\r\n",
"1/21/2022,302.690002,\r\n",
"1/24/2022,292.200012,\r\n",
"1/25/2022,291.519989,\r\n",
"1/26/2022,307.989990,\r\n",
"1/27/2022,302.660004,\r\n",
"1/28/2022,300.230011,\r\n",
"1/31/2022,308.950012,\r\n",
"2/1/2022,310.410004,2145.579549\r\n",
"2/2/2022,309.630005,\r\n",
"2/3/2022,309.489990,\r\n",
"2/4/2022,300.209991,\r\n",
"2/7/2022,306.170013,\r\n",
"2/8/2022,301.250000,\r\n",
"2/9/2022,309.869995,2213.199577\r\n",
"2/10/2022,304.040009,\r\n",
"2/11/2022,303.190002,\r\n",
"2/14/2022,293.769989,\r\n",
"2/15/2022,300.010010,\r\n",
"2/16/2022,298.369995,\r\n",
"2/17/2022,296.359985,\r\n",
"2/18/2022,293.049988,\r\n",
"2/22/2022,285.000000,\r\n",
"2/23/2022,290.179993,\r\n",
"2/24/2022,272.510010,\r\n",
"2/25/2022,295.140015,\r\n",
"2/28/2022,294.309998,\r\n",
"3/1/2022,296.399994,\r\n",
"3/2/2022,295.359985,\r\n",
"3/3/2022,302.890015,2205.149619\r\n",
"3/4/2022,294.290009,\r\n",
"3/7/2022,288.529999,\r\n",
"3/8/2022,277.799988,\r\n",
"3/9/2022,283.440002,\r\n",
"3/10/2022,283.019989,\r\n",
"3/11/2022,287.959991,\r\n",
"3/14/2022,280.339996,\r\n",
"3/15/2022,280.350006,\r\n",
"3/16/2022,289.109985,\r\n",
"3/17/2022,293.290009,2198.149619\r\n",
"3/18/2022,295.369995,\r\n",
"3/21/2022,298.890015,\r\n",
"3/22/2022,299.799988,\r\n",
"3/23/2022,300.510010,\r\n",
"3/24/2022,299.140015,\r\n",
"3/25/2022,305.230011,\r\n",
"3/28/2022,304.329987,\r\n",
"3/29/2022,313.910004,\r\n",
"3/30/2022,313.760010,\r\n",
"3/31/2022,313.899994,\r\n",
"4/1/2022,309.369995,\r\n",
"4/4/2022,310.089996,\r\n",
"4/5/2022,313.269989,\r\n",
"4/6/2022,305.190002,\r\n",
"4/7/2022,296.660004,\r\n",
"4/8/2022,300.440002,\r\n",
"4/11/2022,291.790009,\r\n",
"4/12/2022,289.239990,\r\n",
"4/13/2022,282.730011,\r\n",
"4/14/2022,288.089996,\r\n",
"4/18/2022,278.910004,\r\n",
"4/19/2022,279.380005,\r\n",
"4/20/2022,289.399994,\r\n",
"4/21/2022,288.579987,\r\n",
"4/22/2022,281.679993,\r\n",
"4/25/2022,273.290009,\r\n",
"4/26/2022,277.500000,\r\n",
"4/27/2022,282.100006,\r\n",
"4/28/2022,285.190002,\r\n",
"4/29/2022,288.609985,\r\n",
"5/2/2022,277.709991,\r\n",
"5/3/2022,283.959991,\r\n",
"5/4/2022,282.589996,\r\n",
"5/5/2022,285.540009,2120.309654\r\n",
"5/6/2022,274.809998,\r\n",
"5/9/2022,270.059998,\r\n",
"5/10/2022,271.690002,\r\n",
"5/11/2022,265.679993,\r\n",
"5/12/2022,257.690002,\r\n",
"5/13/2022,257.350006,\r\n",
"5/16/2022,259.959991,\r\n",
"5/17/2022,266.109985,\r\n",
"5/18/2022,263.000000,\r\n",
"5/19/2022,253.899994,\r\n",
"5/20/2022,257.239990,\r\n",
"5/23/2022,255.490005,\r\n",
"5/24/2022,257.890015,\r\n",
"5/25/2022,258.140015,\r\n",
"5/26/2022,262.269989,\r\n",
"5/27/2022,268.480011,2075.999745\r\n",
"5/31/2022,272.529999,\r\n",
"6/1/2022,275.200012,\r\n",
"6/2/2022,264.450012,\r\n",
"6/3/2022,270.309998,2117.019647\r\n",
"6/6/2022,272.059998,\r\n",
"6/7/2022,266.640015,\r\n",
"6/8/2022,271.709991,\r\n",
"6/9/2022,267.779999,\r\n",
"6/10/2022,260.579987,\r\n",
"6/13/2022,245.110001,\r\n",
"6/14/2022,243.860001,\r\n",
"6/15/2022,248.309998,\r\n",
"6/16/2022,245.979996,\r\n",
"6/17/2022,244.699997,\r\n",
"6/21/2022,250.259995,\r\n",
"6/22/2022,251.889999,\r\n",
"6/23/2022,255.570007,\r\n",
"6/24/2022,261.809998,2126.859735\r\n",
"6/27/2022,268.209991,\r\n",
"6/28/2022,263.980011,\r\n",
"6/29/2022,257.589996,\r\n",
"6/30/2022,257.049988,\r\n",
"7/1/2022,256.390015,\r\n",
"7/5/2022,256.160004,\r\n",
"7/6/2022,263.750000,2176.139767\r\n",
"7/7/2022,265.119995,\r\n",
"7/8/2022,264.790009,\r\n",
"7/11/2022,265.649994,\r\n",
"7/12/2022,265.880005,\r\n",
"7/13/2022,250.190002,\r\n",
"7/14/2022,250.570007,\r\n",
"7/15/2022,255.720001,\r\n",
"7/18/2022,259.750000,2252.619751\r\n",
"7/19/2022,257.579987,\r\n",
"7/20/2022,259.899994,2271.179807\r\n",
"7/21/2022,259.790009,\r\n",
"7/22/2022,265.239990,\r\n",
"7/25/2022,261.000000,\r\n",
"7/26/2022,259.859985,\r\n",
"7/27/2022,261.160004,\r\n",
"7/28/2022,269.750000,\r\n",
"7/29/2022,277.700012,\r\n",
"8/1/2022,277.820007,\r\n",
"8/2/2022,276.000000,\r\n",
"8/3/2022,276.760010,\r\n",
"8/4/2022,281.799988,\r\n",
"8/5/2022,279.149994,\r\n",
"8/8/2022,284.049988,\r\n",
"8/9/2022,279.640015,\r\n",
"8/10/2022,288.170013,\r\n",
"8/11/2022,290.850006,\r\n",
"8/12/2022,288.480011,\r\n",
"8/15/2022,291.000000,\r\n",
"8/16/2022,291.989990,\r\n",
"8/17/2022,289.739990,\r\n",
"8/18/2022,290.190002,\r\n",
"8/19/2022,288.899994,\r\n",
"8/22/2022,282.079987,\r\n",
"8/23/2022,276.440002,\r\n",
"8/24/2022,275.410004,\r\n",
"8/25/2022,277.329987,\r\n",
"8/26/2022,279.079987,\r\n",
"8/29/2022,265.850006,\r\n",
"8/30/2022,266.670013,\r\n",
"8/31/2022,265.390015,\r\n",
"9/1/2022,258.869995,\r\n",
"9/2/2022,261.700012,\r\n",
"9/6/2022,256.200012,\r\n",
"9/7/2022,254.699997,\r\n",
"9/8/2022,257.510010,\r\n",
"9/9/2022,260.500000,\r\n",
"9/12/2022,265.779999,\r\n",
"9/13/2022,258.839996,\r\n",
"9/14/2022,253.529999,\r\n",
"9/15/2022,249.770004,\r\n",
"9/16/2022,244.259995,\r\n",
"9/19/2022,242.470001,\r\n",
"9/20/2022,242.070007,\r\n",
"9/21/2022,244.270004,\r\n",
"9/22/2022,237.869995,\r\n",
"9/23/2022,239.539993,\r\n",
"9/26/2022,237.050003,\r\n",
"9/27/2022,239.979996,\r\n",
"9/28/2022,236.809998,\r\n",
"9/29/2022,238.889999,\r\n",
"9/30/2022,238.289993,\r\n",
"10/3/2022,235.410004,\r\n",
"10/4/2022,245.089996,\r\n",
"10/5/2022,245.990005,2027.579831\r\n",
"10/6/2022,247.929993,\r\n",
"10/7/2022,240.899994,\r\n",
"10/10/2022,233.050003,\r\n",
"10/11/2022,227.619995,\r\n",
"10/12/2022,225.399994,\r\n",
"10/13/2022,219.850006,\r\n",
"10/14/2022,235.539993,\r\n",
"10/17/2022,235.820007,\r\n",
"10/18/2022,243.240005,2046.299919\r\n",
"10/19/2022,237.039993,\r\n",
"10/20/2022,235.770004,\r\n",
"10/21/2022,234.740005,\r\n",
"10/24/2022,243.759995,2100.059935\r\n",
"10/25/2022,247.259995,\r\n",
"10/26/2022,231.169998,\r\n",
"10/27/2022,231.039993,\r\n",
"10/28/2022,226.240005,\r\n",
"10/31/2022,233.759995,\r\n",
"11/1/2022,234.600006,\r\n",
"11/2/2022,229.460007,\r\n",
"11/3/2022,220.089996,\r\n",
"11/4/2022,217.550003,\r\n",
"11/7/2022,221.990005,\r\n",
"11/8/2022,228.699997,\r\n",
"11/9/2022,227.369995,\r\n",
"11/10/2022,235.429993,2138.399890\r\n",
"11/11/2022,242.990005,\r\n",
"11/14/2022,241.990005,\r\n",
"11/15/2022,245.660004,\r\n",
"11/16/2022,242.789993,\r\n",
"11/17/2022,237.779999,\r\n",
"11/18/2022,243.509995,\r\n",
"11/21/2022,241.429993,\r\n",
"11/22/2022,243.589996,\r\n",
"11/23/2022,245.110001,\r\n",
"11/25/2022,247.309998,\r\n",
"11/28/2022,246.080002,\r\n",
"11/29/2022,241.399994,\r\n",
"11/30/2022,240.570007,\r\n",
"12/1/2022,253.869995,\r\n",
"12/2/2022,249.820007,\r\n",
"12/5/2022,252.009995,\r\n",
"12/6/2022,250.820007,\r\n",
"12/7/2022,244.830002,\r\n",
"12/8/2022,244.839996,\r\n",
"12/9/2022,244.699997,\r\n",
"12/12/2022,247.449997,2160.399890\r\n",
"12/13/2022,261.690002,\r\n",
"12/14/2022,257.130005,\r\n",
"12/15/2022,253.720001,\r\n",
"12/16/2022,248.550003,\r\n",
"12/19/2022,244.860001,\r\n",
"12/20/2022,239.399994,\r\n",
"12/21/2022,241.690002,\r\n",
"12/22/2022,241.259995,\r\n",
"12/23/2022,236.110001,\r\n",
"12/27/2022,238.699997,\r\n",
"12/28/2022,236.889999,\r\n",
"12/29/2022,235.649994,\r\n",
"12/30/2022,238.210007,\r\n",
"1/3/2023,243.080002,\r\n",
"1/4/2023,232.279999,\r\n",
"1/5/2023,227.199997,\r\n",
"1/6/2023,223.000000,\r\n",
"1/9/2023,226.449997,\r\n",
"1/10/2023,227.759995,\r\n",
"1/11/2023,231.289993,\r\n",
"1/12/2023,235.259995,\r\n",
"1/13/2023,237.000000,2097.519882\r\n",
"1/17/2023,237.970001,\r\n",
"1/18/2023,241.570007,\r\n",
"1/19/2023,233.779999,\r\n",
"1/20/2023,234.860001,\r\n",
"1/23/2023,241.100006,2156.079938\r\n",
"1/24/2023,242.500000,\r\n",
"1/25/2023,234.479996,\r\n",
"1/26/2023,243.649994,2238.609920\r\n",
"1/27/2023,248.990005,\r\n",
"1/30/2023,244.509995,\r\n",
"1/31/2023,243.449997,\r\n",
"2/1/2023,248.000000,\r\n",
"2/2/2023,258.820007,\r\n",
"2/3/2023,259.540009,\r\n",
"2/6/2023,257.440002,\r\n",
"2/7/2023,260.529999,\r\n",
"2/8/2023,273.200012,\r\n",
"2/9/2023,273.799988,\r\n",
"2/10/2023,261.529999,\r\n",
"2/13/2023,267.640015,\r\n",
"2/14/2023,272.670013,\r\n",
"2/15/2023,268.320007,\r\n",
"2/16/2023,264.019989,\r\n",
"2/17/2023,259.390015,\r\n",
"2/21/2023,254.479996,\r\n",
"2/22/2023,254.089996,\r\n",
"2/23/2023,255.559998,\r\n",
"2/24/2023,249.960007,\r\n",
"2/27/2023,252.460007,\r\n",
"2/28/2023,249.070007,\r\n",
"3/1/2023,250.759995,\r\n",
"3/2/2023,246.550003,\r\n",
"3/3/2023,252.190002,\r\n",
"3/6/2023,256.429993,\r\n",
"3/7/2023,256.299988,\r\n",
"3/8/2023,254.039993,\r\n",
"3/9/2023,255.820007,\r\n",
"3/10/2023,251.080002,\r\n",
"3/13/2023,247.399994,\r\n",
"3/14/2023,256.750000,2256.769952\r\n",
"3/15/2023,259.980011,\r\n",
"3/16/2023,265.209991,\r\n",
"3/17/2023,278.260010,\r\n",
"3/20/2023,276.980011,\r\n",
"3/21/2023,274.880005,\r\n",
"3/22/2023,273.399994,\r\n",
"3/23/2023,277.940002,\r\n",
"3/24/2023,277.239990,\r\n",
"3/27/2023,280.500000,\r\n",
"3/28/2023,275.790009,\r\n",
"3/29/2023,278.959991,\r\n",
"3/30/2023,284.230011,\r\n",
"3/31/2023,283.730011,\r\n",
"4/3/2023,286.519989,\r\n",
"4/4/2023,287.230011,\r\n",
"4/5/2023,285.850006,\r\n",
"4/6/2023,283.209991,\r\n",
"4/10/2023,289.209991,\r\n",
"4/11/2023,285.750000,\r\n",
"4/12/2023,284.790009,\r\n",
"4/13/2023,283.589996,\r\n",
"4/14/2023,287.000000,\r\n",
"4/17/2023,289.929993,\r\n",
"4/18/2023,291.570007,\r\n",
"4/19/2023,285.989990,\r\n",
"4/20/2023,285.250000,\r\n",
"4/21/2023,285.010010,\r\n",
"4/24/2023,282.089996,\r\n",
"4/25/2023,279.510010,\r\n",
"4/26/2023,296.700012,2373.650080\r\n",
"4/27/2023,295.970001,\r\n",
"4/28/2023,304.010010,\r\n",
"5/1/2023,306.970001,\r\n",
"5/2/2023,307.760010,\r\n",
"5/3/2023,306.619995,\r\n",
"5/4/2023,306.239990,\r\n",
"5/5/2023,305.720001,\r\n",
"5/8/2023,310.130005,\r\n",
"5/9/2023,308.000000,\r\n",
"5/10/2023,308.619995,\r\n",
"5/11/2023,310.100006,\r\n",
"5/12/2023,310.549988,\r\n",
"5/15/2023,309.100006,\r\n",
"5/16/2023,309.829987,\r\n",
"5/17/2023,312.290009,\r\n",
"5/18/2023,314.529999,\r\n",
"5/19/2023,316.739990,\r\n",
"5/22/2023,318.600006,\r\n",
"5/23/2023,320.029999,\r\n",
"5/24/2023,314.730011,\r\n",
"5/25/2023,323.239990,\r\n",
"5/26/2023,324.019989,\r\n",
"5/30/2023,335.230011,\r\n",
"5/31/2023,332.290009,\r\n",
"6/1/2023,325.929993,\r\n",
"6/2/2023,334.250000,\r\n",
"6/5/2023,335.220001,\r\n",
"6/6/2023,335.329987,\r\n",
"6/7/2023,331.649994,\r\n",
"6/8/2023,323.940002,\r\n",
"6/9/2023,324.989990,\r\n",
"6/12/2023,328.579987,\r\n",
"6/13/2023,334.470001,\r\n",
"6/14/2023,334.339996,\r\n",
"6/15/2023,337.480011,\r\n",
"6/16/2023,351.320007,\r\n",
"6/20/2023,339.309998,\r\n",
"6/21/2023,336.369995,\r\n",
"6/22/2023,334.119995,\r\n",
"6/23/2023,334.359985,\r\n",
"6/26/2023,333.720001,\r\n",
"6/27/2023,331.859985,\r\n",
"6/28/2023,334.660004,2393.250213\r\n",
"6/29/2023,334.709991,\r\n",
"6/30/2023,337.750000,\r\n",
"7/3/2023,339.190002,\r\n",
"7/5/2023,335.089996,\r\n",
"7/6/2023,337.299988,\r\n",
"7/7/2023,339.320007,\r\n",
"7/10/2023,334.600006,\r\n",
"7/11/2023,331.059998,\r\n",
"7/12/2023,336.600006,2407.250213\r\n",
"7/13/2023,339.559998,\r\n",
"7/14/2023,347.589996,\r\n",
"7/17/2023,345.679993,\r\n",
"7/18/2023,345.829987,\r\n",
"7/19/2023,361.750000,\r\n",
"7/20/2023,353.570007,\r\n",
"7/21/2023,349.149994,\r\n",
"7/24/2023,345.850006,\r\n",
"7/25/2023,347.109985,\r\n",
"7/26/2023,341.440002,\r\n",
"7/27/2023,340.480011,\r\n",
"7/28/2023,333.670013,\r\n",
"7/31/2023,336.920013,\r\n",
"8/1/2023,335.190002,\r\n",
"8/2/2023,333.630005,\r\n",
"8/3/2023,326.000000,\r\n",
"8/4/2023,331.880005,\r\n",
"8/7/2023,328.369995,\r\n",
"8/8/2023,326.959991,\r\n",
"8/9/2023,326.470001,\r\n",
"8/10/2023,326.019989,\r\n",
"8/11/2023,320.260010,\r\n",
"8/14/2023,321.390015,\r\n",
"8/15/2023,323.000000,\r\n",
"8/16/2023,320.799988,\r\n",
"8/17/2023,320.540009,\r\n",
"8/18/2023,314.489990,\r\n",
"8/21/2023,317.929993,\r\n",
"8/22/2023,325.500000,\r\n",
"8/23/2023,323.820007,\r\n",
"8/24/2023,332.850006,2347.120241\r\n",
"8/25/2023,321.470001,\r\n",
"8/28/2023,325.660004,2376.450262\r\n",
"8/29/2023,321.880005,\r\n",
"8/30/2023,328.670013,2423.980318\r\n",
"8/31/2023,329.200012,\r\n",
"9/1/2023,331.309998,\r\n",
"9/5/2023,329.000000,\r\n",
"9/6/2023,333.380005,\r\n",
"9/7/2023,331.290009,\r\n",
"9/8/2023,330.089996,\r\n",
"9/11/2023,337.239990,\r\n",
"9/12/2023,335.820007,\r\n",
"9/13/2023,331.309998,\r\n",
"9/14/2023,339.149994,\r\n",
"9/15/2023,336.920013,\r\n",
"9/18/2023,327.799988,\r\n",
"9/19/2023,326.170013,\r\n",
"9/20/2023,329.510010,\r\n",
"9/21/2023,319.260010,\r\n",
"9/22/2023,321.320007,\r\n",
"9/25/2023,316.589996,\r\n",
"9/26/2023,315.130005,\r\n",
"9/27/2023,312.299988,\r\n",
"9/28/2023,310.989990,\r\n",
"9/29/2023,317.750000,\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td><td><span>Balance</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-11-05\">Nov 05, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.370003</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-06\">Nov 06, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.379997</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-08\">Nov 08, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-09\">Nov 09, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.849998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-12\">Nov 12, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.419998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-16\">Nov 16, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.080002</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-21\">Nov 21, 2018</time></td><td><div class=\"dni-plaintext\"><pre>103.599998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-23\">Nov 23, 2018</time></td><td><div class=\"dni-plaintext\"><pre>102.169998</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-26\">Nov 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.790001</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-27\">Nov 27, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-11-29\">Nov 29, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.330002</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-30\">Nov 30, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.699997</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-12-03\">Dec 03, 2018</time></td><td><div class=\"dni-plaintext\"><pre>113.000000</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td colspan=\"3\"><i>(1213 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"merged.Lead(2, (curr, peek) => (Current: curr, Peek: peek))\n",
" .SkipWhile(e => e is (_, { Balance: null }))\n",
" .Select(e => e.Current)\n",
" .ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's better, but notice that we have `null` _gaps_ in `Balance`. To turn it into a continuous time series like the `Price`, let's carry over the _last known value_ for balance to where there is a `null`. To do this carrying over business, we can use [`FillForward`] from MoreLINQ. You tell it what constitutes a blank in the sequence and then `FillForward` does the rest of the magic of remembering the last known value and provides it to you for filling in:\n",
"\n",
"[`FillForward`]: https://morelinq.github.io/4.0/ref/api/html/Overload_MoreLinq_MoreEnumerable_FillForward.htm"
]
},
{
"cell_type": "code",
"execution_count": 132,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price,Balance\r\n",
"11/5/2018,106.370003,\r\n",
"11/6/2018,107.379997,\r\n",
"11/7/2018,109.440002,1033.750000\r\n",
"11/8/2018,111.800003,1033.750000\r\n",
"11/9/2018,110.849998,1033.750000\r\n",
"11/12/2018,109.419998,1033.750000\r\n",
"11/13/2018,107.550003,1033.750000\r\n",
"11/14/2018,108.099998,1038.699955\r\n",
"11/15/2018,104.989998,1038.699955\r\n",
"11/16/2018,107.080002,1038.699955\r\n",
"11/19/2018,108.269997,1068.219946\r\n",
"11/20/2018,101.800003,1068.219946\r\n",
"11/21/2018,103.599998,1068.219946\r\n",
"11/23/2018,102.169998,1068.219946\r\n",
"11/26/2018,104.790001,1068.219946\r\n",
"11/27/2018,106.269997,1068.219946\r\n",
"11/28/2018,107.889999,1129.119906\r\n",
"11/29/2018,110.330002,1129.119906\r\n",
"11/30/2018,110.699997,1129.119906\r\n",
"12/3/2018,113.000000,1129.119906\r\n",
"12/4/2018,111.940002,1129.119906\r\n",
"12/6/2018,105.820000,1129.119906\r\n",
"12/7/2018,108.379997,1154.719876\r\n",
"12/10/2018,104.800003,1154.719876\r\n",
"12/11/2018,109.800003,1209.719876\r\n",
"12/12/2018,110.889999,1209.719876\r\n",
"12/13/2018,109.580002,1209.719876\r\n",
"12/14/2018,108.250000,1209.719876\r\n",
"12/17/2018,105.410004,1209.719876\r\n",
"12/18/2018,103.750000,1209.719876\r\n",
"12/19/2018,103.650002,1209.719876\r\n",
"12/20/2018,103.050003,1209.719876\r\n",
"12/21/2018,101.629997,1209.719876\r\n",
"12/24/2018,97.680000,1209.719876\r\n",
"12/26/2018,95.139999,1209.719876\r\n",
"12/27/2018,99.300003,1209.719876\r\n",
"12/28/2018,102.089996,1209.719876\r\n",
"12/31/2018,101.290001,1209.719876\r\n",
"1/2/2019,99.550003,1209.719876\r\n",
"1/3/2019,100.099998,1209.719876\r\n",
"1/4/2019,99.720001,1209.719876\r\n",
"1/7/2019,101.639999,1209.719876\r\n",
"1/8/2019,103.040001,1183.649843\r\n",
"1/9/2019,103.860001,1183.649843\r\n",
"1/10/2019,103.220001,1183.649843\r\n",
"1/11/2019,103.190002,1183.649843\r\n",
"1/14/2019,101.900002,1183.649843\r\n",
"1/15/2019,102.510002,1183.649843\r\n",
"1/16/2019,105.260002,1183.649843\r\n",
"1/17/2019,105.000000,1183.649843\r\n",
"1/18/2019,107.459999,1183.649843\r\n",
"1/22/2019,106.750000,1183.649843\r\n",
"1/23/2019,106.120003,1183.649843\r\n",
"1/24/2019,106.860001,1183.649843\r\n",
"1/25/2019,107.239998,1183.649843\r\n",
"1/28/2019,106.260002,1183.649843\r\n",
"1/29/2019,104.879997,1183.649843\r\n",
"1/30/2019,104.620003,1183.649843\r\n",
"1/31/2019,103.800003,1183.649843\r\n",
"2/1/2019,103.779999,1183.649843\r\n",
"2/4/2019,102.870003,1183.649843\r\n",
"2/5/2019,106.059998,1208.509788\r\n",
"2/6/2019,107.000000,1208.509788\r\n",
"2/7/2019,105.190002,1208.509788\r\n",
"2/8/2019,104.389999,1208.509788\r\n",
"2/11/2019,106.199997,1228.419766\r\n",
"2/12/2019,106.139999,1228.419766\r\n",
"2/13/2019,107.500000,1228.419766\r\n",
"2/14/2019,106.309998,1228.419766\r\n",
"2/15/2019,107.910004,1228.419766\r\n",
"2/19/2019,107.790001,1228.419766\r\n",
"2/20/2019,107.860001,1228.419766\r\n",
"2/21/2019,106.900002,1228.419766\r\n",
"2/22/2019,110.050003,1228.419766\r\n",
"2/25/2019,111.760002,1228.419766\r\n",
"2/26/2019,111.260002,1228.419766\r\n",
"2/27/2019,111.690002,1228.419766\r\n",
"2/28/2019,112.040001,1228.419766\r\n",
"3/1/2019,112.889999,1228.419766\r\n",
"3/4/2019,113.019997,1228.419766\r\n",
"3/5/2019,112.250000,1228.419766\r\n",
"3/6/2019,111.870003,1228.419766\r\n",
"3/7/2019,111.400002,1228.419766\r\n",
"3/8/2019,109.160004,1228.419766\r\n",
"3/11/2019,110.989998,1248.549700\r\n",
"3/12/2019,112.820000,1248.549700\r\n",
"3/13/2019,114.129997,1248.549700\r\n",
"3/14/2019,114.540001,1248.549700\r\n",
"3/15/2019,115.339996,1248.549700\r\n",
"3/18/2019,116.169998,1248.549700\r\n",
"3/19/2019,118.089996,1248.549700\r\n",
"3/20/2019,117.389999,1248.549700\r\n",
"3/21/2019,117.139999,1248.549700\r\n",
"3/22/2019,119.500000,1248.549700\r\n",
"3/25/2019,116.559998,1248.549700\r\n",
"3/26/2019,118.620003,1248.549700\r\n",
"3/27/2019,117.879997,1248.549700\r\n",
"3/28/2019,117.440002,1248.549700\r\n",
"3/29/2019,118.070000,1248.549700\r\n",
"4/1/2019,118.949997,1248.549700\r\n",
"4/2/2019,119.059998,1248.549700\r\n",
"4/3/2019,119.860001,1248.549700\r\n",
"4/4/2019,120.099998,1248.549700\r\n",
"4/5/2019,119.389999,1248.549700\r\n",
"4/8/2019,119.809998,1248.549700\r\n",
"4/9/2019,118.629997,1248.549700\r\n",
"4/10/2019,119.760002,1248.549700\r\n",
"4/11/2019,120.540001,1248.549700\r\n",
"4/12/2019,120.639999,1248.549700\r\n",
"4/15/2019,120.940002,1248.549700\r\n",
"4/16/2019,121.639999,1248.549700\r\n",
"4/17/2019,121.239998,1248.549700\r\n",
"4/18/2019,122.190002,1248.549700\r\n",
"4/22/2019,122.620003,1248.549700\r\n",
"4/23/2019,124.099998,1248.549700\r\n",
"4/24/2019,125.790001,1248.549700\r\n",
"4/25/2019,130.059998,1248.549700\r\n",
"4/26/2019,129.699997,1248.549700\r\n",
"4/29/2019,129.899994,1248.549700\r\n",
"4/30/2019,129.809998,1248.549700\r\n",
"5/1/2019,130.529999,1248.549700\r\n",
"5/2/2019,127.980003,1248.549700\r\n",
"5/3/2019,127.360001,1248.549700\r\n",
"5/6/2019,126.389999,1248.549700\r\n",
"5/7/2019,126.459999,1248.549700\r\n",
"5/8/2019,125.440002,1248.549700\r\n",
"5/9/2019,124.290001,1248.549700\r\n",
"5/10/2019,124.910004,1248.549700\r\n",
"5/13/2019,124.110001,1248.549700\r\n",
"5/14/2019,123.870003,1248.549700\r\n",
"5/15/2019,124.260002,1248.549700\r\n",
"5/16/2019,126.750000,1273.149690\r\n",
"5/17/2019,128.309998,1273.149690\r\n",
"5/20/2019,126.519997,1273.149690\r\n",
"5/21/2019,127.430000,1282.249720\r\n",
"5/22/2019,126.620003,1282.249720\r\n",
"5/23/2019,126.199997,1282.249720\r\n",
"5/24/2019,126.910004,1285.149730\r\n",
"5/28/2019,126.980003,1285.149730\r\n",
"5/29/2019,125.379997,1285.149730\r\n",
"5/30/2019,125.260002,1285.149730\r\n",
"5/31/2019,124.230003,1285.149730\r\n",
"6/3/2019,123.849998,1285.149730\r\n",
"6/4/2019,121.279999,1285.149730\r\n",
"6/5/2019,124.949997,1285.149730\r\n",
"6/6/2019,126.440002,1295.749780\r\n",
"6/7/2019,129.190002,1295.749780\r\n",
"6/10/2019,132.399994,1295.749780\r\n",
"6/11/2019,133.880005,1295.749780\r\n",
"6/12/2019,131.399994,1295.749780\r\n",
"6/13/2019,131.979996,1295.749780\r\n",
"6/14/2019,132.259995,1295.749780\r\n",
"6/17/2019,132.630005,1295.749780\r\n",
"6/18/2019,134.190002,1295.749780\r\n",
"6/19/2019,135.000000,1295.749780\r\n",
"6/20/2019,137.449997,1295.749780\r\n",
"6/21/2019,136.580002,1295.749780\r\n",
"6/24/2019,137.000000,1295.749780\r\n",
"6/25/2019,137.250000,1295.749780\r\n",
"6/26/2019,134.350006,1295.749780\r\n",
"6/27/2019,134.139999,1295.749780\r\n",
"6/28/2019,134.570007,1295.749780\r\n",
"7/1/2019,136.630005,1295.749780\r\n",
"7/2/2019,136.119995,1295.749780\r\n",
"7/3/2019,136.800003,1295.749780\r\n",
"7/5/2019,135.940002,1295.749780\r\n",
"7/8/2019,136.399994,1295.749780\r\n",
"7/9/2019,136.000000,1295.749780\r\n",
"7/10/2019,137.130005,1295.749780\r\n",
"7/11/2019,138.199997,1295.749780\r\n",
"7/12/2019,138.850006,1295.749780\r\n",
"7/15/2019,139.440002,1295.749780\r\n",
"7/16/2019,138.960007,1295.749780\r\n",
"7/17/2019,137.699997,1295.749780\r\n",
"7/18/2019,135.550003,1295.749780\r\n",
"7/19/2019,140.220001,1337.779762\r\n",
"7/22/2019,137.410004,1337.779762\r\n",
"7/23/2019,139.759995,1337.779762\r\n",
"7/24/2019,138.899994,1337.779762\r\n",
"7/25/2019,140.429993,1337.779762\r\n",
"7/26/2019,140.369995,1337.779762\r\n",
"7/29/2019,141.500000,1337.779762\r\n",
"7/30/2019,140.139999,1337.779762\r\n",
"7/31/2019,140.330002,1337.779762\r\n",
"8/1/2019,137.000000,1337.779762\r\n",
"8/2/2019,138.089996,1337.779762\r\n",
"8/5/2019,133.300003,1337.779762\r\n",
"8/6/2019,133.800003,1337.779762\r\n",
"8/7/2019,133.789993,1337.779762\r\n",
"8/8/2019,136.600006,1337.779762\r\n",
"8/9/2019,138.610001,1352.269771\r\n",
"8/12/2019,137.070007,1352.269771\r\n",
"8/13/2019,136.050003,1352.269771\r\n",
"8/14/2019,136.360001,1352.269771\r\n",
"8/15/2019,134.389999,1352.269771\r\n",
"8/16/2019,134.880005,1352.269771\r\n",
"8/19/2019,137.850006,1359.289762\r\n",
"8/20/2019,138.210007,1359.289762\r\n",
"8/21/2019,138.550003,1359.289762\r\n",
"8/22/2019,138.660004,1359.289762\r\n",
"8/23/2019,137.190002,1359.289762\r\n",
"8/26/2019,134.990005,1359.289762\r\n",
"8/27/2019,136.389999,1359.289762\r\n",
"8/28/2019,134.880005,1359.289762\r\n",
"8/29/2019,137.250000,1381.889712\r\n",
"8/30/2019,139.149994,1381.889712\r\n",
"9/3/2019,136.610001,1381.889712\r\n",
"9/4/2019,137.300003,1381.889712\r\n",
"9/5/2019,139.110001,1381.889712\r\n",
"9/6/2019,140.029999,1381.889712\r\n",
"9/9/2019,139.589996,1381.889712\r\n",
"9/10/2019,136.800003,1381.889712\r\n",
"9/11/2019,135.910004,1381.889712\r\n",
"9/12/2019,137.850006,1392.389742\r\n",
"9/13/2019,137.779999,1392.389742\r\n",
"9/16/2019,135.830002,1392.389742\r\n",
"9/17/2019,136.960007,1392.389742\r\n",
"9/18/2019,137.360001,1392.389742\r\n",
"9/19/2019,140.300003,1437.089752\r\n",
"9/20/2019,141.009995,1437.089752\r\n",
"9/23/2019,139.229996,1437.089752\r\n",
"9/24/2019,140.360001,1437.089752\r\n",
"9/25/2019,137.500000,1437.089752\r\n",
"9/26/2019,139.440002,1456.489772\r\n",
"9/27/2019,140.149994,1456.489772\r\n",
"9/30/2019,138.050003,1456.489772\r\n",
"10/1/2019,139.660004,1472.589782\r\n",
"10/2/2019,136.250000,1472.589782\r\n",
"10/3/2019,134.949997,1472.589782\r\n",
"10/4/2019,136.750000,1472.589782\r\n",
"10/7/2019,137.139999,1472.589782\r\n",
"10/8/2019,137.080002,1472.589782\r\n",
"10/9/2019,137.460007,1472.589782\r\n",
"10/10/2019,138.490005,1494.989832\r\n",
"10/11/2019,140.119995,1494.989832\r\n",
"10/14/2019,139.690002,1494.989832\r\n",
"10/15/2019,140.059998,1494.989832\r\n",
"10/16/2019,140.789993,1494.989832\r\n",
"10/17/2019,140.949997,1494.989832\r\n",
"10/18/2019,139.759995,1494.989832\r\n",
"10/21/2019,138.449997,1494.989832\r\n",
"10/22/2019,138.970001,1500.189872\r\n",
"10/23/2019,136.880005,1500.189872\r\n",
"10/24/2019,139.389999,1525.289812\r\n",
"10/25/2019,139.339996,1525.289812\r\n",
"10/28/2019,144.399994,1525.289812\r\n",
"10/29/2019,144.080002,1525.289812\r\n",
"10/30/2019,143.520004,1525.289812\r\n",
"10/31/2019,144.899994,1525.289812\r\n",
"11/1/2019,144.259995,1525.289812\r\n",
"11/4/2019,144.830002,1525.289812\r\n",
"11/5/2019,144.970001,1525.289812\r\n",
"11/6/2019,144.369995,1525.289812\r\n",
"11/7/2019,143.839996,1525.289812\r\n",
"11/8/2019,143.979996,1525.289812\r\n",
"11/11/2019,145.339996,1525.289812\r\n",
"11/12/2019,146.279999,1525.289812\r\n",
"11/13/2019,146.740005,1525.289812\r\n",
"11/14/2019,147.020004,1525.289812\r\n",
"11/15/2019,148.929993,1525.289812\r\n",
"11/18/2019,150.070007,1525.289812\r\n",
"11/19/2019,150.880005,1525.289812\r\n",
"11/20/2019,150.309998,1525.289812\r\n",
"11/21/2019,149.399994,1525.289812\r\n",
"11/22/2019,150.070007,1525.289812\r\n",
"11/25/2019,150.000000,1525.289812\r\n",
"11/26/2019,151.360001,1525.289812\r\n",
"11/27/2019,152.330002,1525.289812\r\n",
"11/29/2019,152.100006,1525.289812\r\n",
"12/2/2019,151.809998,1525.289812\r\n",
"12/3/2019,147.490005,1525.289812\r\n",
"12/4/2019,150.139999,1551.789752\r\n",
"12/5/2019,150.050003,1551.789752\r\n",
"12/6/2019,150.990005,1551.789752\r\n",
"12/9/2019,151.070007,1551.789752\r\n",
"12/10/2019,151.289993,1551.789752\r\n",
"12/11/2019,151.539993,1551.789752\r\n",
"12/12/2019,151.649994,1551.789752\r\n",
"12/13/2019,153.000000,1551.789752\r\n",
"12/16/2019,155.110001,1551.789752\r\n",
"12/17/2019,155.449997,1551.789752\r\n",
"12/18/2019,154.300003,1551.789752\r\n",
"12/19/2019,154.000000,1551.789752\r\n",
"12/20/2019,157.350006,1551.789752\r\n",
"12/23/2019,158.119995,1551.789752\r\n",
"12/24/2019,157.479996,1551.789752\r\n",
"12/26/2019,157.559998,1551.789752\r\n",
"12/27/2019,159.449997,1551.789752\r\n",
"12/30/2019,158.990005,1551.789752\r\n",
"12/31/2019,156.770004,1551.789752\r\n",
"1/2/2020,158.779999,1551.789752\r\n",
"1/3/2020,158.320007,1551.789752\r\n",
"1/6/2020,157.080002,1551.789752\r\n",
"1/7/2020,159.320007,1551.789752\r\n",
"1/8/2020,158.929993,1551.789752\r\n",
"1/9/2020,161.839996,1551.789752\r\n",
"1/10/2020,162.820007,1551.789752\r\n",
"1/13/2020,161.759995,1551.789752\r\n",
"1/14/2020,163.389999,1551.789752\r\n",
"1/15/2020,162.619995,1551.789752\r\n",
"1/16/2020,164.350006,1551.789752\r\n",
"1/17/2020,167.419998,1551.789752\r\n",
"1/21/2020,166.679993,1551.789752\r\n",
"1/22/2020,167.399994,1551.789752\r\n",
"1/23/2020,166.190002,1551.789752\r\n",
"1/24/2020,167.509995,1551.789752\r\n",
"1/27/2020,161.149994,1551.789752\r\n",
"1/28/2020,163.779999,1575.459797\r\n",
"1/29/2020,167.839996,1575.459797\r\n",
"1/30/2020,174.050003,1575.459797\r\n",
"1/31/2020,172.210007,1575.459797\r\n",
"2/3/2020,170.429993,1575.459797\r\n",
"2/4/2020,177.139999,1575.459797\r\n",
"2/5/2020,184.029999,1575.459797\r\n",
"2/6/2020,180.970001,1575.459797\r\n",
"2/7/2020,182.850006,1575.459797\r\n",
"2/10/2020,183.580002,1575.459797\r\n",
"2/11/2020,190.649994,1575.459797\r\n",
"2/12/2020,185.580002,1575.459797\r\n",
"2/13/2020,183.080002,1575.459797\r\n",
"2/14/2020,183.250000,1575.459797\r\n",
"2/18/2020,185.610001,1575.459797\r\n",
"2/19/2020,188.059998,1575.459797\r\n",
"2/20/2020,186.949997,1575.459797\r\n",
"2/21/2020,183.169998,1575.459797\r\n",
"2/24/2020,167.770004,1575.459797\r\n",
"2/25/2020,174.199997,1575.459797\r\n",
"2/26/2020,169.710007,1575.459797\r\n",
"2/27/2020,163.320007,1575.459797\r\n",
"2/28/2020,152.410004,1575.459797\r\n",
"3/2/2020,165.309998,1575.459797\r\n",
"3/3/2020,173.800003,1575.459797\r\n",
"3/4/2020,168.490005,1575.459797\r\n",
"3/5/2020,166.050003,1575.459797\r\n",
"3/6/2020,162.610001,1575.459797\r\n",
"3/9/2020,151.000000,1575.459797\r\n",
"3/10/2020,158.160004,1575.459797\r\n",
"3/11/2020,157.130005,1575.459797\r\n",
"3/12/2020,145.300003,1575.459797\r\n",
"3/13/2020,147.500000,1575.459797\r\n",
"3/16/2020,140.000000,1575.459797\r\n",
"3/17/2020,140.000000,1575.459797\r\n",
"3/18/2020,138.000000,1575.459797\r\n",
"3/19/2020,142.770004,1575.459797\r\n",
"3/20/2020,146.000000,1575.459797\r\n",
"3/23/2020,137.009995,1575.459797\r\n",
"3/24/2020,143.750000,1575.459797\r\n",
"3/25/2020,148.910004,1575.459797\r\n",
"3/26/2020,148.399994,1575.459797\r\n",
"3/27/2020,151.750000,1431.279761\r\n",
"3/30/2020,152.440002,1431.279761\r\n",
"3/31/2020,159.399994,1431.279761\r\n",
"4/1/2020,153.000000,1431.279761\r\n",
"4/2/2020,151.860001,1431.279761\r\n",
"4/3/2020,155.100006,1431.279761\r\n",
"4/6/2020,160.320007,1431.279761\r\n",
"4/7/2020,169.589996,1431.279761\r\n",
"4/8/2020,165.669998,1431.279761\r\n",
"4/9/2020,166.360001,1431.279761\r\n",
"4/13/2020,164.350006,1431.279761\r\n",
"4/14/2020,169.000000,1431.279761\r\n",
"4/15/2020,171.199997,1431.279761\r\n",
"4/16/2020,174.300003,1431.279761\r\n",
"4/17/2020,179.500000,1431.279761\r\n",
"4/20/2020,176.630005,1431.279761\r\n",
"4/21/2020,173.500000,1431.279761\r\n",
"4/22/2020,171.389999,1431.279761\r\n",
"4/23/2020,174.110001,1431.279761\r\n",
"4/24/2020,172.059998,1431.279761\r\n",
"4/27/2020,176.589996,1431.279761\r\n",
"4/28/2020,175.589996,1431.279761\r\n",
"4/29/2020,173.220001,1431.279761\r\n",
"4/30/2020,180.000000,1431.279761\r\n",
"5/1/2020,175.800003,1431.279761\r\n",
"5/4/2020,174.490005,1431.279761\r\n",
"5/5/2020,180.619995,1431.279761\r\n",
"5/6/2020,182.080002,1431.279761\r\n",
"5/7/2020,184.169998,1431.279761\r\n",
"5/8/2020,184.979996,1431.279761\r\n",
"5/11/2020,183.149994,1431.279761\r\n",
"5/12/2020,186.800003,1431.279761\r\n",
"5/13/2020,182.550003,1431.279761\r\n",
"5/14/2020,177.539993,1431.279761\r\n",
"5/15/2020,179.059998,1443.439801\r\n",
"5/18/2020,185.750000,1443.439801\r\n",
"5/19/2020,185.029999,1443.439801\r\n",
"5/20/2020,184.809998,1443.439801\r\n",
"5/21/2020,185.399994,1443.439801\r\n",
"5/22/2020,183.190002,1443.439801\r\n",
"5/26/2020,186.339996,1443.439801\r\n",
"5/27/2020,180.199997,1443.439801\r\n",
"5/28/2020,180.740005,1443.439801\r\n",
"5/29/2020,182.729996,1463.679793\r\n",
"6/1/2020,182.539993,1463.679793\r\n",
"6/2/2020,184.250000,1477.359849\r\n",
"6/3/2020,184.820007,1477.359849\r\n",
"6/4/2020,184.300003,1477.359849\r\n",
"6/5/2020,182.619995,1477.359849\r\n",
"6/8/2020,185.940002,1503.919905\r\n",
"6/9/2020,188.000000,1503.919905\r\n",
"6/10/2020,191.130005,1503.919905\r\n",
"6/11/2020,193.130005,1503.919905\r\n",
"6/12/2020,190.539993,1503.919905\r\n",
"6/15/2020,184.580002,1503.919905\r\n",
"6/16/2020,192.889999,1570.399881\r\n",
"6/17/2020,195.029999,1570.399881\r\n",
"6/18/2020,194.000000,1570.399881\r\n",
"6/19/2020,198.589996,1570.399881\r\n",
"6/22/2020,195.789993,1570.399881\r\n",
"6/23/2020,202.089996,1570.399881\r\n",
"6/24/2020,201.600006,1570.399881\r\n",
"6/25/2020,197.800003,1570.399881\r\n",
"6/26/2020,199.729996,1570.399881\r\n",
"6/29/2020,195.779999,1570.399881\r\n",
"6/30/2020,197.880005,1570.399881\r\n",
"7/1/2020,203.139999,1570.399881\r\n",
"7/2/2020,205.679993,1570.399881\r\n",
"7/6/2020,208.830002,1570.399881\r\n",
"7/7/2020,210.449997,1570.399881\r\n",
"7/8/2020,210.070007,1570.399881\r\n",
"7/9/2020,216.330002,1570.399881\r\n",
"7/10/2020,213.619995,1570.399881\r\n",
"7/13/2020,214.479996,1570.399881\r\n",
"7/14/2020,206.130005,1570.399881\r\n",
"7/15/2020,209.559998,1570.399881\r\n",
"7/16/2020,205.399994,1570.399881\r\n",
"7/17/2020,204.470001,1570.399881\r\n",
"7/20/2020,205.000000,1570.399881\r\n",
"7/21/2020,213.660004,1634.729902\r\n",
"7/22/2020,209.199997,1634.729902\r\n",
"7/23/2020,207.190002,1634.729902\r\n",
"7/24/2020,200.419998,1634.729902\r\n",
"7/27/2020,201.470001,1634.729902\r\n",
"7/28/2020,203.610001,1634.729902\r\n",
"7/29/2020,202.500000,1634.729902\r\n",
"7/30/2020,201.000000,1634.729902\r\n",
"7/31/2020,204.399994,1634.729902\r\n",
"8/3/2020,211.520004,1723.529950\r\n",
"8/4/2020,214.169998,1723.529950\r\n",
"8/5/2020,214.899994,1723.529950\r\n",
"8/6/2020,212.339996,1723.529950\r\n",
"8/7/2020,214.850006,1723.529950\r\n",
"8/10/2020,211.669998,1723.529950\r\n",
"8/11/2020,207.160004,1723.529950\r\n",
"8/12/2020,205.289993,1723.529950\r\n",
"8/13/2020,209.440002,1741.769934\r\n",
"8/14/2020,208.759995,1741.769934\r\n",
"8/17/2020,209.600006,1741.769934\r\n",
"8/18/2020,210.529999,1741.769934\r\n",
"8/19/2020,211.490005,1741.769934\r\n",
"8/20/2020,209.539993,1741.769934\r\n",
"8/21/2020,213.860001,1741.769934\r\n",
"8/24/2020,214.789993,1741.769934\r\n",
"8/25/2020,213.100006,1741.769934\r\n",
"8/26/2020,217.880005,1741.769934\r\n",
"8/27/2020,222.889999,1741.769934\r\n",
"8/28/2020,228.179993,1741.769934\r\n",
"8/31/2020,227.000000,1741.769934\r\n",
"9/1/2020,225.509995,1741.769934\r\n",
"9/2/2020,227.970001,1741.769934\r\n",
"9/3/2020,229.270004,1741.769934\r\n",
"9/4/2020,215.100006,1741.769934\r\n",
"9/8/2020,206.500000,1741.769934\r\n",
"9/9/2020,207.600006,1741.769934\r\n",
"9/10/2020,213.399994,1741.769934\r\n",
"9/11/2020,207.199997,1741.769934\r\n",
"9/14/2020,204.240005,1741.769934\r\n",
"9/15/2020,208.419998,1741.769934\r\n",
"9/16/2020,210.619995,1741.769934\r\n",
"9/17/2020,200.050003,1741.769934\r\n",
"9/18/2020,202.800003,1741.769934\r\n",
"9/21/2020,197.190002,1741.769934\r\n",
"9/22/2020,205.059998,1741.769934\r\n",
"9/23/2020,207.899994,1741.769934\r\n",
"9/24/2020,199.850006,1741.769934\r\n",
"9/25/2020,203.550003,1741.769934\r\n",
"9/28/2020,210.880005,1708.009926\r\n",
"9/29/2020,209.350006,1708.009926\r\n",
"9/30/2020,207.729996,1708.009926\r\n",
"10/1/2020,213.490005,1741.129918\r\n",
"10/2/2020,208.000000,1741.129918\r\n",
"10/5/2020,207.220001,1741.129918\r\n",
"10/6/2020,208.820007,1741.129918\r\n",
"10/7/2020,207.059998,1741.129918\r\n",
"10/8/2020,210.509995,1741.129918\r\n",
"10/9/2020,211.229996,1741.129918\r\n",
"10/12/2020,218.789993,1741.129918\r\n",
"10/13/2020,222.720001,1741.129918\r\n",
"10/14/2020,223.000000,1741.129918\r\n",
"10/15/2020,217.100006,1741.129918\r\n",
"10/16/2020,220.149994,1741.129918\r\n",
"10/19/2020,220.419998,1741.129918\r\n",
"10/20/2020,215.800003,1741.129918\r\n",
"10/21/2020,213.119995,1741.129918\r\n",
"10/22/2020,213.929993,1741.129918\r\n",
"10/23/2020,215.029999,1741.129918\r\n",
"10/26/2020,213.850006,1741.129918\r\n",
"10/27/2020,211.589996,1741.129918\r\n",
"10/28/2020,207.669998,1741.129918\r\n",
"10/29/2020,204.070007,1741.129918\r\n",
"10/30/2020,203.500000,1741.129918\r\n",
"11/2/2020,204.289993,1741.129918\r\n",
"11/3/2020,203.889999,1741.129918\r\n",
"11/4/2020,214.020004,1742.489902\r\n",
"11/5/2020,222.039993,1742.489902\r\n",
"11/6/2020,222.259995,1742.489902\r\n",
"11/9/2020,224.440002,1742.489902\r\n",
"11/10/2020,214.500000,1742.489902\r\n",
"11/11/2020,212.389999,1742.489902\r\n",
"11/12/2020,217.210007,1781.049966\r\n",
"11/13/2020,216.360001,1781.049966\r\n",
"11/16/2020,214.869995,1781.049966\r\n",
"11/17/2020,216.100006,1781.049966\r\n",
"11/18/2020,213.649994,1781.049966\r\n",
"11/19/2020,211.380005,1781.049966\r\n",
"11/20/2020,212.199997,1781.049966\r\n",
"11/23/2020,210.949997,1781.049966\r\n",
"11/24/2020,209.589996,1781.049966\r\n",
"11/25/2020,215.110001,1810.889934\r\n",
"11/27/2020,214.850006,1810.889934\r\n",
"11/30/2020,214.100006,1810.889934\r\n",
"12/1/2020,214.509995,1810.889934\r\n",
"12/2/2020,214.880005,1810.889934\r\n",
"12/3/2020,214.610001,1810.889934\r\n",
"12/4/2020,214.220001,1810.889934\r\n",
"12/7/2020,214.369995,1810.889934\r\n",
"12/8/2020,213.970001,1810.889934\r\n",
"12/9/2020,215.160004,1819.369918\r\n",
"12/10/2020,211.770004,1819.369918\r\n",
"12/11/2020,210.050003,1819.369918\r\n",
"12/14/2020,213.100006,1819.369918\r\n",
"12/15/2020,215.169998,1846.569870\r\n",
"12/16/2020,214.750000,1846.569870\r\n",
"12/17/2020,219.869995,1846.569870\r\n",
"12/18/2020,218.589996,1846.569870\r\n",
"12/21/2020,217.550003,1846.569870\r\n",
"12/22/2020,222.690002,1846.569870\r\n",
"12/23/2020,223.110001,1846.569870\r\n",
"12/24/2020,221.419998,1846.569870\r\n",
"12/28/2020,224.449997,1846.569870\r\n",
"12/29/2020,226.309998,1846.569870\r\n",
"12/30/2020,225.229996,1846.569870\r\n",
"12/31/2020,221.699997,1846.569870\r\n",
"1/4/2021,222.529999,1846.569870\r\n",
"1/5/2021,217.259995,1846.569870\r\n",
"1/6/2021,212.169998,1846.569870\r\n",
"1/7/2021,214.039993,1846.569870\r\n",
"1/8/2021,218.679993,1857.929854\r\n",
"1/11/2021,218.470001,1857.929854\r\n",
"1/12/2021,216.500000,1857.929854\r\n",
"1/13/2021,214.020004,1857.929854\r\n",
"1/14/2021,215.910004,1857.929854\r\n",
"1/15/2021,213.520004,1857.929854\r\n",
"1/19/2021,213.750000,1857.929854\r\n",
"1/20/2021,217.699997,1857.929854\r\n",
"1/21/2021,224.699997,1907.769822\r\n",
"1/22/2021,227.080002,1907.769822\r\n",
"1/25/2021,229.119995,1907.769822\r\n",
"1/26/2021,231.860001,1907.769822\r\n",
"1/27/2021,238.000000,1907.769822\r\n",
"1/28/2021,235.610001,1907.769822\r\n",
"1/29/2021,235.990005,1907.769822\r\n",
"2/1/2021,235.059998,1907.769822\r\n",
"2/2/2021,241.300003,1907.769822\r\n",
"2/3/2021,239.570007,1907.769822\r\n",
"2/4/2021,242.660004,1907.769822\r\n",
"2/5/2021,242.229996,1907.769822\r\n",
"2/8/2021,243.149994,1907.769822\r\n",
"2/9/2021,241.869995,1907.769822\r\n",
"2/10/2021,245.000000,1907.769822\r\n",
"2/11/2021,244.779999,1907.769822\r\n",
"2/12/2021,243.929993,1907.769822\r\n",
"2/16/2021,245.029999,1907.769822\r\n",
"2/17/2021,241.320007,1907.769822\r\n",
"2/18/2021,241.800003,1907.769822\r\n",
"2/19/2021,243.750000,1907.769822\r\n",
"2/22/2021,237.419998,1907.769822\r\n",
"2/23/2021,230.330002,1907.769822\r\n",
"2/24/2021,230.009995,1907.769822\r\n",
"2/25/2021,232.080002,1907.769822\r\n",
"2/26/2021,231.529999,1907.769822\r\n",
"3/1/2021,235.899994,1907.769822\r\n",
"3/2/2021,237.009995,1907.769822\r\n",
"3/3/2021,232.160004,1907.769822\r\n",
"3/4/2021,226.740005,1907.769822\r\n",
"3/5/2021,229.520004,1907.769822\r\n",
"3/8/2021,231.369995,1907.769822\r\n",
"3/9/2021,232.880005,1907.769822\r\n",
"3/10/2021,237.000000,1904.409838\r\n",
"3/11/2021,234.960007,1904.409838\r\n",
"3/12/2021,234.009995,1904.409838\r\n",
"3/15/2021,234.960007,1904.409838\r\n",
"3/16/2021,236.279999,1914.969774\r\n",
"3/17/2021,236.149994,1914.969774\r\n",
"3/18/2021,232.559998,1914.969774\r\n",
"3/19/2021,231.020004,1914.969774\r\n",
"3/22/2021,230.270004,1914.969774\r\n",
"3/23/2021,237.490005,1954.409830\r\n",
"3/24/2021,237.850006,1954.409830\r\n",
"3/25/2021,235.300003,1954.409830\r\n",
"3/26/2021,231.550003,1954.409830\r\n",
"3/29/2021,236.589996,1994.729774\r\n",
"3/30/2021,233.529999,1994.729774\r\n",
"3/31/2021,232.910004,1994.729774\r\n",
"4/1/2021,238.470001,2034.249790\r\n",
"4/5/2021,242.759995,2034.249790\r\n",
"4/6/2021,247.610001,2034.249790\r\n",
"4/7/2021,247.809998,2034.249790\r\n",
"4/8/2021,252.770004,2034.249790\r\n",
"4/9/2021,252.869995,2034.249790\r\n",
"4/12/2021,254.710007,2034.249790\r\n",
"4/13/2021,257.260010,2034.249790\r\n",
"4/14/2021,257.480011,2034.249790\r\n",
"4/15/2021,257.929993,2034.249790\r\n",
"4/16/2021,259.470001,2034.249790\r\n",
"4/19/2021,260.190002,2034.249790\r\n",
"4/20/2021,257.820007,2034.249790\r\n",
"4/21/2021,258.940002,2034.249790\r\n",
"4/22/2021,260.209991,2034.249790\r\n",
"4/23/2021,257.880005,2034.249790\r\n",
"4/26/2021,261.660004,2034.249790\r\n",
"4/27/2021,261.579987,2034.249790\r\n",
"4/28/2021,256.079987,2034.249790\r\n",
"4/29/2021,255.460007,2034.249790\r\n",
"4/30/2021,249.740005,2034.249790\r\n",
"5/3/2021,253.399994,2034.249790\r\n",
"5/4/2021,250.970001,2034.249790\r\n",
"5/5/2021,249.059998,2034.249790\r\n",
"5/6/2021,246.449997,2034.249790\r\n",
"5/7/2021,252.149994,2034.249790\r\n",
"5/10/2021,250.869995,2034.249790\r\n",
"5/11/2021,244.550003,2034.249790\r\n",
"5/12/2021,242.169998,2034.249790\r\n",
"5/13/2021,241.800003,2034.249790\r\n",
"5/14/2021,245.580002,2034.249790\r\n",
"5/17/2021,246.550003,2034.249790\r\n",
"5/18/2021,246.270004,2034.249790\r\n",
"5/19/2021,239.309998,2034.249790\r\n",
"5/20/2021,243.960007,2034.249790\r\n",
"5/21/2021,247.570007,2034.249790\r\n",
"5/24/2021,247.789993,2034.249790\r\n",
"5/25/2021,251.770004,2050.489782\r\n",
"5/26/2021,251.429993,2050.489782\r\n",
"5/27/2021,251.169998,2050.489782\r\n",
"5/28/2021,251.000000,2050.489782\r\n",
"6/1/2021,251.229996,2050.489782\r\n",
"6/2/2021,248.130005,2050.489782\r\n",
"6/3/2021,245.220001,2050.489782\r\n",
"6/4/2021,247.759995,2070.809734\r\n",
"6/7/2021,249.979996,2070.809734\r\n",
"6/8/2021,255.160004,2070.809734\r\n",
"6/9/2021,253.809998,2070.809734\r\n",
"6/10/2021,254.289993,2070.809734\r\n",
"6/11/2021,257.989990,2070.809734\r\n",
"6/14/2021,257.899994,2070.809734\r\n",
"6/15/2021,259.769989,2070.809734\r\n",
"6/16/2021,259.399994,2070.809734\r\n",
"6/17/2021,256.070007,2070.809734\r\n",
"6/18/2021,259.630005,2070.809734\r\n",
"6/21/2021,259.820007,2070.809734\r\n",
"6/22/2021,262.720001,2070.809734\r\n",
"6/23/2021,265.989990,2070.809734\r\n",
"6/24/2021,266.160004,2070.809734\r\n",
"6/25/2021,266.230011,2070.809734\r\n",
"6/28/2021,266.190002,2070.809734\r\n",
"6/29/2021,268.869995,2070.809734\r\n",
"6/30/2021,270.690002,2070.809734\r\n",
"7/1/2021,269.609985,2070.809734\r\n",
"7/2/2021,272.820007,2070.809734\r\n",
"7/6/2021,278.029999,2070.809734\r\n",
"7/7/2021,279.399994,2070.809734\r\n",
"7/8/2021,276.899994,2070.809734\r\n",
"7/9/2021,275.720001,2070.809734\r\n",
"7/12/2021,279.160004,2070.809734\r\n",
"7/13/2021,277.519989,2070.809734\r\n",
"7/14/2021,282.350006,2070.809734\r\n",
"7/15/2021,282.000000,2070.809734\r\n",
"7/16/2021,282.070007,2070.809734\r\n",
"7/19/2021,278.929993,2070.809734\r\n",
"7/20/2021,278.029999,2070.809734\r\n",
"7/21/2021,278.899994,2070.809734\r\n",
"7/22/2021,283.839996,2070.809734\r\n",
"7/23/2021,287.369995,2070.809734\r\n",
"7/26/2021,289.000000,2070.809734\r\n",
"7/27/2021,289.429993,2070.809734\r\n",
"7/28/2021,288.989990,2070.809734\r\n",
"7/29/2021,286.239990,2070.809734\r\n",
"7/30/2021,285.170013,2070.809734\r\n",
"8/2/2021,286.359985,2070.809734\r\n",
"8/3/2021,285.420013,2070.809734\r\n",
"8/4/2021,286.220001,2070.809734\r\n",
"8/5/2021,286.880005,2070.809734\r\n",
"8/6/2021,288.510010,2070.809734\r\n",
"8/9/2021,289.750000,2070.809734\r\n",
"8/10/2021,288.799988,2070.809734\r\n",
"8/11/2021,287.209991,2070.809734\r\n",
"8/12/2021,286.630005,2070.809734\r\n",
"8/13/2021,289.480011,2070.809734\r\n",
"8/16/2021,293.190002,2070.809734\r\n",
"8/17/2021,292.390015,2070.809734\r\n",
"8/18/2021,292.040009,2070.809734\r\n",
"8/19/2021,288.690002,2070.809734\r\n",
"8/20/2021,299.720001,2070.809734\r\n",
"8/23/2021,303.250000,2070.809734\r\n",
"8/24/2021,305.019989,2070.809734\r\n",
"8/25/2021,304.299988,2070.809734\r\n",
"8/26/2021,300.989990,2070.809734\r\n",
"8/27/2021,298.989990,2070.809734\r\n",
"8/30/2021,301.119995,2070.809734\r\n",
"8/31/2021,304.420013,2070.809734\r\n",
"9/1/2021,302.869995,2070.809734\r\n",
"9/2/2021,302.200012,2070.809734\r\n",
"9/3/2021,300.989990,2070.809734\r\n",
"9/7/2021,301.010010,2070.809734\r\n",
"9/8/2021,299.779999,2070.809734\r\n",
"9/9/2021,300.820007,2070.809734\r\n",
"9/10/2021,298.420013,2070.809734\r\n",
"9/13/2021,297.549988,2070.809734\r\n",
"9/14/2021,299.559998,2070.809734\r\n",
"9/15/2021,303.260010,2099.849716\r\n",
"9/16/2021,303.760010,2099.849716\r\n",
"9/17/2021,304.170013,2099.849716\r\n",
"9/20/2021,296.329987,2099.849716\r\n",
"9/21/2021,295.690002,2099.849716\r\n",
"9/22/2021,296.730011,2099.849716\r\n",
"9/23/2021,298.850006,2099.849716\r\n",
"9/24/2021,298.230011,2099.849716\r\n",
"9/27/2021,296.140015,2099.849716\r\n",
"9/28/2021,289.799988,2099.849716\r\n",
"9/29/2021,285.100006,2099.849716\r\n",
"9/30/2021,285.709991,2099.849716\r\n",
"10/1/2021,282.119995,2099.849716\r\n",
"10/4/2021,287.399994,2099.849716\r\n",
"10/5/2021,284.049988,2099.849716\r\n",
"10/6/2021,285.779999,2099.849716\r\n",
"10/7/2021,295.179993,2091.799758\r\n",
"10/8/2021,296.220001,2091.799758\r\n",
"10/11/2021,292.920013,2091.799758\r\n",
"10/12/2021,295.339996,2108.739639\r\n",
"10/13/2021,294.910004,2108.739639\r\n",
"10/14/2021,299.209991,2108.739639\r\n",
"10/15/2021,302.339996,2108.739639\r\n",
"10/18/2021,303.570007,2108.739639\r\n",
"10/19/2021,308.350006,2108.739639\r\n",
"10/20/2021,309.209991,2108.739639\r\n",
"10/21/2021,307.170013,2108.739639\r\n",
"10/22/2021,310.399994,2108.739639\r\n",
"10/25/2021,309.359985,2108.739639\r\n",
"10/26/2021,311.000000,2108.739639\r\n",
"10/27/2021,316.000000,2108.739639\r\n",
"10/28/2021,324.329987,2108.739639\r\n",
"10/29/2021,324.130005,2108.739639\r\n",
"11/1/2021,331.359985,2108.739639\r\n",
"11/2/2021,330.309998,2108.739639\r\n",
"11/3/2021,333.899994,2108.739639\r\n",
"11/4/2021,332.890015,2108.739639\r\n",
"11/5/2021,338.510010,2108.739639\r\n",
"11/8/2021,337.299988,2108.739639\r\n",
"11/9/2021,337.109985,2108.739639\r\n",
"11/10/2021,334.570007,2108.739639\r\n",
"11/11/2021,331.250000,2108.739639\r\n",
"11/12/2021,333.920013,2108.739639\r\n",
"11/15/2021,337.540009,2108.739639\r\n",
"11/16/2021,335.679993,2108.739639\r\n",
"11/17/2021,338.940002,2108.739639\r\n",
"11/18/2021,338.179993,2108.739639\r\n",
"11/19/2021,342.640015,2108.739639\r\n",
"11/22/2021,344.619995,2108.739639\r\n",
"11/23/2021,337.049988,2108.739639\r\n",
"11/24/2021,336.279999,2108.739639\r\n",
"11/26/2021,334.350006,2108.739639\r\n",
"11/29/2021,334.940002,2108.739639\r\n",
"11/30/2021,335.320007,2108.739639\r\n",
"12/1/2021,335.130005,2108.739639\r\n",
"12/2/2021,330.299988,2108.739639\r\n",
"12/3/2021,331.989990,2108.739639\r\n",
"12/6/2021,323.950012,2108.739639\r\n",
"12/7/2021,331.640015,2108.739639\r\n",
"12/8/2021,335.309998,2114.499591\r\n",
"12/9/2021,334.410004,2114.499591\r\n",
"12/10/2021,334.980011,2114.499591\r\n",
"12/13/2021,340.679993,2152.119525\r\n",
"12/14/2021,333.220001,2152.119525\r\n",
"12/15/2021,328.609985,2152.119525\r\n",
"12/16/2021,335.709991,2167.059465\r\n",
"12/17/2021,320.880005,2167.059465\r\n",
"12/20/2021,320.049988,2167.059465\r\n",
"12/21/2021,323.290009,2167.059465\r\n",
"12/22/2021,328.299988,2167.059465\r\n",
"12/23/2021,332.750000,2238.279435\r\n",
"12/27/2021,335.459991,2238.279435\r\n",
"12/28/2021,343.149994,2238.279435\r\n",
"12/29/2021,341.299988,2238.279435\r\n",
"12/30/2021,341.910004,2238.279435\r\n",
"12/31/2021,338.510010,2238.279435\r\n",
"1/3/2022,335.350006,2238.279435\r\n",
"1/4/2022,334.829987,2238.279435\r\n",
"1/5/2022,325.859985,2238.279435\r\n",
"1/6/2022,313.149994,2238.279435\r\n",
"1/7/2022,314.149994,2238.279435\r\n",
"1/10/2022,309.489990,2238.279435\r\n",
"1/11/2022,313.380005,2238.279435\r\n",
"1/12/2022,319.670013,2238.279435\r\n",
"1/13/2022,320.470001,2238.279435\r\n",
"1/14/2022,304.250000,2238.279435\r\n",
"1/18/2022,304.070007,2238.279435\r\n",
"1/19/2022,306.290009,2238.279435\r\n",
"1/20/2022,309.070007,2238.279435\r\n",
"1/21/2022,302.690002,2238.279435\r\n",
"1/24/2022,292.200012,2238.279435\r\n",
"1/25/2022,291.519989,2238.279435\r\n",
"1/26/2022,307.989990,2238.279435\r\n",
"1/27/2022,302.660004,2238.279435\r\n",
"1/28/2022,300.230011,2238.279435\r\n",
"1/31/2022,308.950012,2238.279435\r\n",
"2/1/2022,310.410004,2145.579549\r\n",
"2/2/2022,309.630005,2145.579549\r\n",
"2/3/2022,309.489990,2145.579549\r\n",
"2/4/2022,300.209991,2145.579549\r\n",
"2/7/2022,306.170013,2145.579549\r\n",
"2/8/2022,301.250000,2145.579549\r\n",
"2/9/2022,309.869995,2213.199577\r\n",
"2/10/2022,304.040009,2213.199577\r\n",
"2/11/2022,303.190002,2213.199577\r\n",
"2/14/2022,293.769989,2213.199577\r\n",
"2/15/2022,300.010010,2213.199577\r\n",
"2/16/2022,298.369995,2213.199577\r\n",
"2/17/2022,296.359985,2213.199577\r\n",
"2/18/2022,293.049988,2213.199577\r\n",
"2/22/2022,285.000000,2213.199577\r\n",
"2/23/2022,290.179993,2213.199577\r\n",
"2/24/2022,272.510010,2213.199577\r\n",
"2/25/2022,295.140015,2213.199577\r\n",
"2/28/2022,294.309998,2213.199577\r\n",
"3/1/2022,296.399994,2213.199577\r\n",
"3/2/2022,295.359985,2213.199577\r\n",
"3/3/2022,302.890015,2205.149619\r\n",
"3/4/2022,294.290009,2205.149619\r\n",
"3/7/2022,288.529999,2205.149619\r\n",
"3/8/2022,277.799988,2205.149619\r\n",
"3/9/2022,283.440002,2205.149619\r\n",
"3/10/2022,283.019989,2205.149619\r\n",
"3/11/2022,287.959991,2205.149619\r\n",
"3/14/2022,280.339996,2205.149619\r\n",
"3/15/2022,280.350006,2205.149619\r\n",
"3/16/2022,289.109985,2205.149619\r\n",
"3/17/2022,293.290009,2198.149619\r\n",
"3/18/2022,295.369995,2198.149619\r\n",
"3/21/2022,298.890015,2198.149619\r\n",
"3/22/2022,299.799988,2198.149619\r\n",
"3/23/2022,300.510010,2198.149619\r\n",
"3/24/2022,299.140015,2198.149619\r\n",
"3/25/2022,305.230011,2198.149619\r\n",
"3/28/2022,304.329987,2198.149619\r\n",
"3/29/2022,313.910004,2198.149619\r\n",
"3/30/2022,313.760010,2198.149619\r\n",
"3/31/2022,313.899994,2198.149619\r\n",
"4/1/2022,309.369995,2198.149619\r\n",
"4/4/2022,310.089996,2198.149619\r\n",
"4/5/2022,313.269989,2198.149619\r\n",
"4/6/2022,305.190002,2198.149619\r\n",
"4/7/2022,296.660004,2198.149619\r\n",
"4/8/2022,300.440002,2198.149619\r\n",
"4/11/2022,291.790009,2198.149619\r\n",
"4/12/2022,289.239990,2198.149619\r\n",
"4/13/2022,282.730011,2198.149619\r\n",
"4/14/2022,288.089996,2198.149619\r\n",
"4/18/2022,278.910004,2198.149619\r\n",
"4/19/2022,279.380005,2198.149619\r\n",
"4/20/2022,289.399994,2198.149619\r\n",
"4/21/2022,288.579987,2198.149619\r\n",
"4/22/2022,281.679993,2198.149619\r\n",
"4/25/2022,273.290009,2198.149619\r\n",
"4/26/2022,277.500000,2198.149619\r\n",
"4/27/2022,282.100006,2198.149619\r\n",
"4/28/2022,285.190002,2198.149619\r\n",
"4/29/2022,288.609985,2198.149619\r\n",
"5/2/2022,277.709991,2198.149619\r\n",
"5/3/2022,283.959991,2198.149619\r\n",
"5/4/2022,282.589996,2198.149619\r\n",
"5/5/2022,285.540009,2120.309654\r\n",
"5/6/2022,274.809998,2120.309654\r\n",
"5/9/2022,270.059998,2120.309654\r\n",
"5/10/2022,271.690002,2120.309654\r\n",
"5/11/2022,265.679993,2120.309654\r\n",
"5/12/2022,257.690002,2120.309654\r\n",
"5/13/2022,257.350006,2120.309654\r\n",
"5/16/2022,259.959991,2120.309654\r\n",
"5/17/2022,266.109985,2120.309654\r\n",
"5/18/2022,263.000000,2120.309654\r\n",
"5/19/2022,253.899994,2120.309654\r\n",
"5/20/2022,257.239990,2120.309654\r\n",
"5/23/2022,255.490005,2120.309654\r\n",
"5/24/2022,257.890015,2120.309654\r\n",
"5/25/2022,258.140015,2120.309654\r\n",
"5/26/2022,262.269989,2120.309654\r\n",
"5/27/2022,268.480011,2075.999745\r\n",
"5/31/2022,272.529999,2075.999745\r\n",
"6/1/2022,275.200012,2075.999745\r\n",
"6/2/2022,264.450012,2075.999745\r\n",
"6/3/2022,270.309998,2117.019647\r\n",
"6/6/2022,272.059998,2117.019647\r\n",
"6/7/2022,266.640015,2117.019647\r\n",
"6/8/2022,271.709991,2117.019647\r\n",
"6/9/2022,267.779999,2117.019647\r\n",
"6/10/2022,260.579987,2117.019647\r\n",
"6/13/2022,245.110001,2117.019647\r\n",
"6/14/2022,243.860001,2117.019647\r\n",
"6/15/2022,248.309998,2117.019647\r\n",
"6/16/2022,245.979996,2117.019647\r\n",
"6/17/2022,244.699997,2117.019647\r\n",
"6/21/2022,250.259995,2117.019647\r\n",
"6/22/2022,251.889999,2117.019647\r\n",
"6/23/2022,255.570007,2117.019647\r\n",
"6/24/2022,261.809998,2126.859735\r\n",
"6/27/2022,268.209991,2126.859735\r\n",
"6/28/2022,263.980011,2126.859735\r\n",
"6/29/2022,257.589996,2126.859735\r\n",
"6/30/2022,257.049988,2126.859735\r\n",
"7/1/2022,256.390015,2126.859735\r\n",
"7/5/2022,256.160004,2126.859735\r\n",
"7/6/2022,263.750000,2176.139767\r\n",
"7/7/2022,265.119995,2176.139767\r\n",
"7/8/2022,264.790009,2176.139767\r\n",
"7/11/2022,265.649994,2176.139767\r\n",
"7/12/2022,265.880005,2176.139767\r\n",
"7/13/2022,250.190002,2176.139767\r\n",
"7/14/2022,250.570007,2176.139767\r\n",
"7/15/2022,255.720001,2176.139767\r\n",
"7/18/2022,259.750000,2252.619751\r\n",
"7/19/2022,257.579987,2252.619751\r\n",
"7/20/2022,259.899994,2271.179807\r\n",
"7/21/2022,259.790009,2271.179807\r\n",
"7/22/2022,265.239990,2271.179807\r\n",
"7/25/2022,261.000000,2271.179807\r\n",
"7/26/2022,259.859985,2271.179807\r\n",
"7/27/2022,261.160004,2271.179807\r\n",
"7/28/2022,269.750000,2271.179807\r\n",
"7/29/2022,277.700012,2271.179807\r\n",
"8/1/2022,277.820007,2271.179807\r\n",
"8/2/2022,276.000000,2271.179807\r\n",
"8/3/2022,276.760010,2271.179807\r\n",
"8/4/2022,281.799988,2271.179807\r\n",
"8/5/2022,279.149994,2271.179807\r\n",
"8/8/2022,284.049988,2271.179807\r\n",
"8/9/2022,279.640015,2271.179807\r\n",
"8/10/2022,288.170013,2271.179807\r\n",
"8/11/2022,290.850006,2271.179807\r\n",
"8/12/2022,288.480011,2271.179807\r\n",
"8/15/2022,291.000000,2271.179807\r\n",
"8/16/2022,291.989990,2271.179807\r\n",
"8/17/2022,289.739990,2271.179807\r\n",
"8/18/2022,290.190002,2271.179807\r\n",
"8/19/2022,288.899994,2271.179807\r\n",
"8/22/2022,282.079987,2271.179807\r\n",
"8/23/2022,276.440002,2271.179807\r\n",
"8/24/2022,275.410004,2271.179807\r\n",
"8/25/2022,277.329987,2271.179807\r\n",
"8/26/2022,279.079987,2271.179807\r\n",
"8/29/2022,265.850006,2271.179807\r\n",
"8/30/2022,266.670013,2271.179807\r\n",
"8/31/2022,265.390015,2271.179807\r\n",
"9/1/2022,258.869995,2271.179807\r\n",
"9/2/2022,261.700012,2271.179807\r\n",
"9/6/2022,256.200012,2271.179807\r\n",
"9/7/2022,254.699997,2271.179807\r\n",
"9/8/2022,257.510010,2271.179807\r\n",
"9/9/2022,260.500000,2271.179807\r\n",
"9/12/2022,265.779999,2271.179807\r\n",
"9/13/2022,258.839996,2271.179807\r\n",
"9/14/2022,253.529999,2271.179807\r\n",
"9/15/2022,249.770004,2271.179807\r\n",
"9/16/2022,244.259995,2271.179807\r\n",
"9/19/2022,242.470001,2271.179807\r\n",
"9/20/2022,242.070007,2271.179807\r\n",
"9/21/2022,244.270004,2271.179807\r\n",
"9/22/2022,237.869995,2271.179807\r\n",
"9/23/2022,239.539993,2271.179807\r\n",
"9/26/2022,237.050003,2271.179807\r\n",
"9/27/2022,239.979996,2271.179807\r\n",
"9/28/2022,236.809998,2271.179807\r\n",
"9/29/2022,238.889999,2271.179807\r\n",
"9/30/2022,238.289993,2271.179807\r\n",
"10/3/2022,235.410004,2271.179807\r\n",
"10/4/2022,245.089996,2271.179807\r\n",
"10/5/2022,245.990005,2027.579831\r\n",
"10/6/2022,247.929993,2027.579831\r\n",
"10/7/2022,240.899994,2027.579831\r\n",
"10/10/2022,233.050003,2027.579831\r\n",
"10/11/2022,227.619995,2027.579831\r\n",
"10/12/2022,225.399994,2027.579831\r\n",
"10/13/2022,219.850006,2027.579831\r\n",
"10/14/2022,235.539993,2027.579831\r\n",
"10/17/2022,235.820007,2027.579831\r\n",
"10/18/2022,243.240005,2046.299919\r\n",
"10/19/2022,237.039993,2046.299919\r\n",
"10/20/2022,235.770004,2046.299919\r\n",
"10/21/2022,234.740005,2046.299919\r\n",
"10/24/2022,243.759995,2100.059935\r\n",
"10/25/2022,247.259995,2100.059935\r\n",
"10/26/2022,231.169998,2100.059935\r\n",
"10/27/2022,231.039993,2100.059935\r\n",
"10/28/2022,226.240005,2100.059935\r\n",
"10/31/2022,233.759995,2100.059935\r\n",
"11/1/2022,234.600006,2100.059935\r\n",
"11/2/2022,229.460007,2100.059935\r\n",
"11/3/2022,220.089996,2100.059935\r\n",
"11/4/2022,217.550003,2100.059935\r\n",
"11/7/2022,221.990005,2100.059935\r\n",
"11/8/2022,228.699997,2100.059935\r\n",
"11/9/2022,227.369995,2100.059935\r\n",
"11/10/2022,235.429993,2138.399890\r\n",
"11/11/2022,242.990005,2138.399890\r\n",
"11/14/2022,241.990005,2138.399890\r\n",
"11/15/2022,245.660004,2138.399890\r\n",
"11/16/2022,242.789993,2138.399890\r\n",
"11/17/2022,237.779999,2138.399890\r\n",
"11/18/2022,243.509995,2138.399890\r\n",
"11/21/2022,241.429993,2138.399890\r\n",
"11/22/2022,243.589996,2138.399890\r\n",
"11/23/2022,245.110001,2138.399890\r\n",
"11/25/2022,247.309998,2138.399890\r\n",
"11/28/2022,246.080002,2138.399890\r\n",
"11/29/2022,241.399994,2138.399890\r\n",
"11/30/2022,240.570007,2138.399890\r\n",
"12/1/2022,253.869995,2138.399890\r\n",
"12/2/2022,249.820007,2138.399890\r\n",
"12/5/2022,252.009995,2138.399890\r\n",
"12/6/2022,250.820007,2138.399890\r\n",
"12/7/2022,244.830002,2138.399890\r\n",
"12/8/2022,244.839996,2138.399890\r\n",
"12/9/2022,244.699997,2138.399890\r\n",
"12/12/2022,247.449997,2160.399890\r\n",
"12/13/2022,261.690002,2160.399890\r\n",
"12/14/2022,257.130005,2160.399890\r\n",
"12/15/2022,253.720001,2160.399890\r\n",
"12/16/2022,248.550003,2160.399890\r\n",
"12/19/2022,244.860001,2160.399890\r\n",
"12/20/2022,239.399994,2160.399890\r\n",
"12/21/2022,241.690002,2160.399890\r\n",
"12/22/2022,241.259995,2160.399890\r\n",
"12/23/2022,236.110001,2160.399890\r\n",
"12/27/2022,238.699997,2160.399890\r\n",
"12/28/2022,236.889999,2160.399890\r\n",
"12/29/2022,235.649994,2160.399890\r\n",
"12/30/2022,238.210007,2160.399890\r\n",
"1/3/2023,243.080002,2160.399890\r\n",
"1/4/2023,232.279999,2160.399890\r\n",
"1/5/2023,227.199997,2160.399890\r\n",
"1/6/2023,223.000000,2160.399890\r\n",
"1/9/2023,226.449997,2160.399890\r\n",
"1/10/2023,227.759995,2160.399890\r\n",
"1/11/2023,231.289993,2160.399890\r\n",
"1/12/2023,235.259995,2160.399890\r\n",
"1/13/2023,237.000000,2097.519882\r\n",
"1/17/2023,237.970001,2097.519882\r\n",
"1/18/2023,241.570007,2097.519882\r\n",
"1/19/2023,233.779999,2097.519882\r\n",
"1/20/2023,234.860001,2097.519882\r\n",
"1/23/2023,241.100006,2156.079938\r\n",
"1/24/2023,242.500000,2156.079938\r\n",
"1/25/2023,234.479996,2156.079938\r\n",
"1/26/2023,243.649994,2238.609920\r\n",
"1/27/2023,248.990005,2238.609920\r\n",
"1/30/2023,244.509995,2238.609920\r\n",
"1/31/2023,243.449997,2238.609920\r\n",
"2/1/2023,248.000000,2238.609920\r\n",
"2/2/2023,258.820007,2238.609920\r\n",
"2/3/2023,259.540009,2238.609920\r\n",
"2/6/2023,257.440002,2238.609920\r\n",
"2/7/2023,260.529999,2238.609920\r\n",
"2/8/2023,273.200012,2238.609920\r\n",
"2/9/2023,273.799988,2238.609920\r\n",
"2/10/2023,261.529999,2238.609920\r\n",
"2/13/2023,267.640015,2238.609920\r\n",
"2/14/2023,272.670013,2238.609920\r\n",
"2/15/2023,268.320007,2238.609920\r\n",
"2/16/2023,264.019989,2238.609920\r\n",
"2/17/2023,259.390015,2238.609920\r\n",
"2/21/2023,254.479996,2238.609920\r\n",
"2/22/2023,254.089996,2238.609920\r\n",
"2/23/2023,255.559998,2238.609920\r\n",
"2/24/2023,249.960007,2238.609920\r\n",
"2/27/2023,252.460007,2238.609920\r\n",
"2/28/2023,249.070007,2238.609920\r\n",
"3/1/2023,250.759995,2238.609920\r\n",
"3/2/2023,246.550003,2238.609920\r\n",
"3/3/2023,252.190002,2238.609920\r\n",
"3/6/2023,256.429993,2238.609920\r\n",
"3/7/2023,256.299988,2238.609920\r\n",
"3/8/2023,254.039993,2238.609920\r\n",
"3/9/2023,255.820007,2238.609920\r\n",
"3/10/2023,251.080002,2238.609920\r\n",
"3/13/2023,247.399994,2238.609920\r\n",
"3/14/2023,256.750000,2256.769952\r\n",
"3/15/2023,259.980011,2256.769952\r\n",
"3/16/2023,265.209991,2256.769952\r\n",
"3/17/2023,278.260010,2256.769952\r\n",
"3/20/2023,276.980011,2256.769952\r\n",
"3/21/2023,274.880005,2256.769952\r\n",
"3/22/2023,273.399994,2256.769952\r\n",
"3/23/2023,277.940002,2256.769952\r\n",
"3/24/2023,277.239990,2256.769952\r\n",
"3/27/2023,280.500000,2256.769952\r\n",
"3/28/2023,275.790009,2256.769952\r\n",
"3/29/2023,278.959991,2256.769952\r\n",
"3/30/2023,284.230011,2256.769952\r\n",
"3/31/2023,283.730011,2256.769952\r\n",
"4/3/2023,286.519989,2256.769952\r\n",
"4/4/2023,287.230011,2256.769952\r\n",
"4/5/2023,285.850006,2256.769952\r\n",
"4/6/2023,283.209991,2256.769952\r\n",
"4/10/2023,289.209991,2256.769952\r\n",
"4/11/2023,285.750000,2256.769952\r\n",
"4/12/2023,284.790009,2256.769952\r\n",
"4/13/2023,283.589996,2256.769952\r\n",
"4/14/2023,287.000000,2256.769952\r\n",
"4/17/2023,289.929993,2256.769952\r\n",
"4/18/2023,291.570007,2256.769952\r\n",
"4/19/2023,285.989990,2256.769952\r\n",
"4/20/2023,285.250000,2256.769952\r\n",
"4/21/2023,285.010010,2256.769952\r\n",
"4/24/2023,282.089996,2256.769952\r\n",
"4/25/2023,279.510010,2256.769952\r\n",
"4/26/2023,296.700012,2373.650080\r\n",
"4/27/2023,295.970001,2373.650080\r\n",
"4/28/2023,304.010010,2373.650080\r\n",
"5/1/2023,306.970001,2373.650080\r\n",
"5/2/2023,307.760010,2373.650080\r\n",
"5/3/2023,306.619995,2373.650080\r\n",
"5/4/2023,306.239990,2373.650080\r\n",
"5/5/2023,305.720001,2373.650080\r\n",
"5/8/2023,310.130005,2373.650080\r\n",
"5/9/2023,308.000000,2373.650080\r\n",
"5/10/2023,308.619995,2373.650080\r\n",
"5/11/2023,310.100006,2373.650080\r\n",
"5/12/2023,310.549988,2373.650080\r\n",
"5/15/2023,309.100006,2373.650080\r\n",
"5/16/2023,309.829987,2373.650080\r\n",
"5/17/2023,312.290009,2373.650080\r\n",
"5/18/2023,314.529999,2373.650080\r\n",
"5/19/2023,316.739990,2373.650080\r\n",
"5/22/2023,318.600006,2373.650080\r\n",
"5/23/2023,320.029999,2373.650080\r\n",
"5/24/2023,314.730011,2373.650080\r\n",
"5/25/2023,323.239990,2373.650080\r\n",
"5/26/2023,324.019989,2373.650080\r\n",
"5/30/2023,335.230011,2373.650080\r\n",
"5/31/2023,332.290009,2373.650080\r\n",
"6/1/2023,325.929993,2373.650080\r\n",
"6/2/2023,334.250000,2373.650080\r\n",
"6/5/2023,335.220001,2373.650080\r\n",
"6/6/2023,335.329987,2373.650080\r\n",
"6/7/2023,331.649994,2373.650080\r\n",
"6/8/2023,323.940002,2373.650080\r\n",
"6/9/2023,324.989990,2373.650080\r\n",
"6/12/2023,328.579987,2373.650080\r\n",
"6/13/2023,334.470001,2373.650080\r\n",
"6/14/2023,334.339996,2373.650080\r\n",
"6/15/2023,337.480011,2373.650080\r\n",
"6/16/2023,351.320007,2373.650080\r\n",
"6/20/2023,339.309998,2373.650080\r\n",
"6/21/2023,336.369995,2373.650080\r\n",
"6/22/2023,334.119995,2373.650080\r\n",
"6/23/2023,334.359985,2373.650080\r\n",
"6/26/2023,333.720001,2373.650080\r\n",
"6/27/2023,331.859985,2373.650080\r\n",
"6/28/2023,334.660004,2393.250213\r\n",
"6/29/2023,334.709991,2393.250213\r\n",
"6/30/2023,337.750000,2393.250213\r\n",
"7/3/2023,339.190002,2393.250213\r\n",
"7/5/2023,335.089996,2393.250213\r\n",
"7/6/2023,337.299988,2393.250213\r\n",
"7/7/2023,339.320007,2393.250213\r\n",
"7/10/2023,334.600006,2393.250213\r\n",
"7/11/2023,331.059998,2393.250213\r\n",
"7/12/2023,336.600006,2407.250213\r\n",
"7/13/2023,339.559998,2407.250213\r\n",
"7/14/2023,347.589996,2407.250213\r\n",
"7/17/2023,345.679993,2407.250213\r\n",
"7/18/2023,345.829987,2407.250213\r\n",
"7/19/2023,361.750000,2407.250213\r\n",
"7/20/2023,353.570007,2407.250213\r\n",
"7/21/2023,349.149994,2407.250213\r\n",
"7/24/2023,345.850006,2407.250213\r\n",
"7/25/2023,347.109985,2407.250213\r\n",
"7/26/2023,341.440002,2407.250213\r\n",
"7/27/2023,340.480011,2407.250213\r\n",
"7/28/2023,333.670013,2407.250213\r\n",
"7/31/2023,336.920013,2407.250213\r\n",
"8/1/2023,335.190002,2407.250213\r\n",
"8/2/2023,333.630005,2407.250213\r\n",
"8/3/2023,326.000000,2407.250213\r\n",
"8/4/2023,331.880005,2407.250213\r\n",
"8/7/2023,328.369995,2407.250213\r\n",
"8/8/2023,326.959991,2407.250213\r\n",
"8/9/2023,326.470001,2407.250213\r\n",
"8/10/2023,326.019989,2407.250213\r\n",
"8/11/2023,320.260010,2407.250213\r\n",
"8/14/2023,321.390015,2407.250213\r\n",
"8/15/2023,323.000000,2407.250213\r\n",
"8/16/2023,320.799988,2407.250213\r\n",
"8/17/2023,320.540009,2407.250213\r\n",
"8/18/2023,314.489990,2407.250213\r\n",
"8/21/2023,317.929993,2407.250213\r\n",
"8/22/2023,325.500000,2407.250213\r\n",
"8/23/2023,323.820007,2407.250213\r\n",
"8/24/2023,332.850006,2347.120241\r\n",
"8/25/2023,321.470001,2347.120241\r\n",
"8/28/2023,325.660004,2376.450262\r\n",
"8/29/2023,321.880005,2376.450262\r\n",
"8/30/2023,328.670013,2423.980318\r\n",
"8/31/2023,329.200012,2423.980318\r\n",
"9/1/2023,331.309998,2423.980318\r\n",
"9/5/2023,329.000000,2423.980318\r\n",
"9/6/2023,333.380005,2423.980318\r\n",
"9/7/2023,331.290009,2423.980318\r\n",
"9/8/2023,330.089996,2423.980318\r\n",
"9/11/2023,337.239990,2423.980318\r\n",
"9/12/2023,335.820007,2423.980318\r\n",
"9/13/2023,331.309998,2423.980318\r\n",
"9/14/2023,339.149994,2423.980318\r\n",
"9/15/2023,336.920013,2423.980318\r\n",
"9/18/2023,327.799988,2423.980318\r\n",
"9/19/2023,326.170013,2423.980318\r\n",
"9/20/2023,329.510010,2423.980318\r\n",
"9/21/2023,319.260010,2423.980318\r\n",
"9/22/2023,321.320007,2423.980318\r\n",
"9/25/2023,316.589996,2423.980318\r\n",
"9/26/2023,315.130005,2423.980318\r\n",
"9/27/2023,312.299988,2423.980318\r\n",
"9/28/2023,310.989990,2423.980318\r\n",
"9/29/2023,317.750000,2423.980318\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td><td><span>Balance</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-11-05\">Nov 05, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.370003</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-06\">Nov 06, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.379997</pre></div></td><td><div class=\"dni-plaintext\"><pre>&lt;null&gt;</pre></div></td></tr><tr><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-08\">Nov 08, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-09\">Nov 09, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.849998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-12\">Nov 12, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.419998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-16\">Nov 16, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.080002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-21\">Nov 21, 2018</time></td><td><div class=\"dni-plaintext\"><pre>103.599998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-23\">Nov 23, 2018</time></td><td><div class=\"dni-plaintext\"><pre>102.169998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-26\">Nov 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.790001</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-27\">Nov 27, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-11-29\">Nov 29, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.330002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-11-30\">Nov 30, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.699997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-12-03\">Dec 03, 2018</time></td><td><div class=\"dni-plaintext\"><pre>113.000000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td colspan=\"3\"><i>(1213 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var filled = merged.FillForward(e => e.Balance is null,\n",
" (e, f) => new { e.Date, e.Price, Balance = f.Balance ?? e.Balance });\n",
" \n",
"filled.Lead(2, (curr, peek) => (Current: curr, Peek: peek))\n",
" .SkipWhile(e => e is (_, { Balance: null }))\n",
" .Select(e => e.Current)\n",
" .ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Great, but there's one last problem. The initial balance is missing from the start of the series, which is normal. Let's fix that by seeding the `initialBalance` using [`Prepend`] from LINQ such that `FillForward` will always start with a last known value for when it sees a `null`. The seeding element is later removed or filtered by skipping it because it isn't really part of the original data.\n",
"\n",
"[`Prepend`]: https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.prepend"
]
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/csv": [
"Date,Price,Balance\r\n",
"11/5/2018,106.370003,1000\r\n",
"11/6/2018,107.379997,1000\r\n",
"11/7/2018,109.440002,1033.750000\r\n",
"11/8/2018,111.800003,1033.750000\r\n",
"11/9/2018,110.849998,1033.750000\r\n",
"11/12/2018,109.419998,1033.750000\r\n",
"11/13/2018,107.550003,1033.750000\r\n",
"11/14/2018,108.099998,1038.699955\r\n",
"11/15/2018,104.989998,1038.699955\r\n",
"11/16/2018,107.080002,1038.699955\r\n",
"11/19/2018,108.269997,1068.219946\r\n",
"11/20/2018,101.800003,1068.219946\r\n",
"11/21/2018,103.599998,1068.219946\r\n",
"11/23/2018,102.169998,1068.219946\r\n",
"11/26/2018,104.790001,1068.219946\r\n",
"11/27/2018,106.269997,1068.219946\r\n",
"11/28/2018,107.889999,1129.119906\r\n",
"11/29/2018,110.330002,1129.119906\r\n",
"11/30/2018,110.699997,1129.119906\r\n",
"12/3/2018,113.000000,1129.119906\r\n",
"12/4/2018,111.940002,1129.119906\r\n",
"12/6/2018,105.820000,1129.119906\r\n",
"12/7/2018,108.379997,1154.719876\r\n",
"12/10/2018,104.800003,1154.719876\r\n",
"12/11/2018,109.800003,1209.719876\r\n",
"12/12/2018,110.889999,1209.719876\r\n",
"12/13/2018,109.580002,1209.719876\r\n",
"12/14/2018,108.250000,1209.719876\r\n",
"12/17/2018,105.410004,1209.719876\r\n",
"12/18/2018,103.750000,1209.719876\r\n",
"12/19/2018,103.650002,1209.719876\r\n",
"12/20/2018,103.050003,1209.719876\r\n",
"12/21/2018,101.629997,1209.719876\r\n",
"12/24/2018,97.680000,1209.719876\r\n",
"12/26/2018,95.139999,1209.719876\r\n",
"12/27/2018,99.300003,1209.719876\r\n",
"12/28/2018,102.089996,1209.719876\r\n",
"12/31/2018,101.290001,1209.719876\r\n",
"1/2/2019,99.550003,1209.719876\r\n",
"1/3/2019,100.099998,1209.719876\r\n",
"1/4/2019,99.720001,1209.719876\r\n",
"1/7/2019,101.639999,1209.719876\r\n",
"1/8/2019,103.040001,1183.649843\r\n",
"1/9/2019,103.860001,1183.649843\r\n",
"1/10/2019,103.220001,1183.649843\r\n",
"1/11/2019,103.190002,1183.649843\r\n",
"1/14/2019,101.900002,1183.649843\r\n",
"1/15/2019,102.510002,1183.649843\r\n",
"1/16/2019,105.260002,1183.649843\r\n",
"1/17/2019,105.000000,1183.649843\r\n",
"1/18/2019,107.459999,1183.649843\r\n",
"1/22/2019,106.750000,1183.649843\r\n",
"1/23/2019,106.120003,1183.649843\r\n",
"1/24/2019,106.860001,1183.649843\r\n",
"1/25/2019,107.239998,1183.649843\r\n",
"1/28/2019,106.260002,1183.649843\r\n",
"1/29/2019,104.879997,1183.649843\r\n",
"1/30/2019,104.620003,1183.649843\r\n",
"1/31/2019,103.800003,1183.649843\r\n",
"2/1/2019,103.779999,1183.649843\r\n",
"2/4/2019,102.870003,1183.649843\r\n",
"2/5/2019,106.059998,1208.509788\r\n",
"2/6/2019,107.000000,1208.509788\r\n",
"2/7/2019,105.190002,1208.509788\r\n",
"2/8/2019,104.389999,1208.509788\r\n",
"2/11/2019,106.199997,1228.419766\r\n",
"2/12/2019,106.139999,1228.419766\r\n",
"2/13/2019,107.500000,1228.419766\r\n",
"2/14/2019,106.309998,1228.419766\r\n",
"2/15/2019,107.910004,1228.419766\r\n",
"2/19/2019,107.790001,1228.419766\r\n",
"2/20/2019,107.860001,1228.419766\r\n",
"2/21/2019,106.900002,1228.419766\r\n",
"2/22/2019,110.050003,1228.419766\r\n",
"2/25/2019,111.760002,1228.419766\r\n",
"2/26/2019,111.260002,1228.419766\r\n",
"2/27/2019,111.690002,1228.419766\r\n",
"2/28/2019,112.040001,1228.419766\r\n",
"3/1/2019,112.889999,1228.419766\r\n",
"3/4/2019,113.019997,1228.419766\r\n",
"3/5/2019,112.250000,1228.419766\r\n",
"3/6/2019,111.870003,1228.419766\r\n",
"3/7/2019,111.400002,1228.419766\r\n",
"3/8/2019,109.160004,1228.419766\r\n",
"3/11/2019,110.989998,1248.549700\r\n",
"3/12/2019,112.820000,1248.549700\r\n",
"3/13/2019,114.129997,1248.549700\r\n",
"3/14/2019,114.540001,1248.549700\r\n",
"3/15/2019,115.339996,1248.549700\r\n",
"3/18/2019,116.169998,1248.549700\r\n",
"3/19/2019,118.089996,1248.549700\r\n",
"3/20/2019,117.389999,1248.549700\r\n",
"3/21/2019,117.139999,1248.549700\r\n",
"3/22/2019,119.500000,1248.549700\r\n",
"3/25/2019,116.559998,1248.549700\r\n",
"3/26/2019,118.620003,1248.549700\r\n",
"3/27/2019,117.879997,1248.549700\r\n",
"3/28/2019,117.440002,1248.549700\r\n",
"3/29/2019,118.070000,1248.549700\r\n",
"4/1/2019,118.949997,1248.549700\r\n",
"4/2/2019,119.059998,1248.549700\r\n",
"4/3/2019,119.860001,1248.549700\r\n",
"4/4/2019,120.099998,1248.549700\r\n",
"4/5/2019,119.389999,1248.549700\r\n",
"4/8/2019,119.809998,1248.549700\r\n",
"4/9/2019,118.629997,1248.549700\r\n",
"4/10/2019,119.760002,1248.549700\r\n",
"4/11/2019,120.540001,1248.549700\r\n",
"4/12/2019,120.639999,1248.549700\r\n",
"4/15/2019,120.940002,1248.549700\r\n",
"4/16/2019,121.639999,1248.549700\r\n",
"4/17/2019,121.239998,1248.549700\r\n",
"4/18/2019,122.190002,1248.549700\r\n",
"4/22/2019,122.620003,1248.549700\r\n",
"4/23/2019,124.099998,1248.549700\r\n",
"4/24/2019,125.790001,1248.549700\r\n",
"4/25/2019,130.059998,1248.549700\r\n",
"4/26/2019,129.699997,1248.549700\r\n",
"4/29/2019,129.899994,1248.549700\r\n",
"4/30/2019,129.809998,1248.549700\r\n",
"5/1/2019,130.529999,1248.549700\r\n",
"5/2/2019,127.980003,1248.549700\r\n",
"5/3/2019,127.360001,1248.549700\r\n",
"5/6/2019,126.389999,1248.549700\r\n",
"5/7/2019,126.459999,1248.549700\r\n",
"5/8/2019,125.440002,1248.549700\r\n",
"5/9/2019,124.290001,1248.549700\r\n",
"5/10/2019,124.910004,1248.549700\r\n",
"5/13/2019,124.110001,1248.549700\r\n",
"5/14/2019,123.870003,1248.549700\r\n",
"5/15/2019,124.260002,1248.549700\r\n",
"5/16/2019,126.750000,1273.149690\r\n",
"5/17/2019,128.309998,1273.149690\r\n",
"5/20/2019,126.519997,1273.149690\r\n",
"5/21/2019,127.430000,1282.249720\r\n",
"5/22/2019,126.620003,1282.249720\r\n",
"5/23/2019,126.199997,1282.249720\r\n",
"5/24/2019,126.910004,1285.149730\r\n",
"5/28/2019,126.980003,1285.149730\r\n",
"5/29/2019,125.379997,1285.149730\r\n",
"5/30/2019,125.260002,1285.149730\r\n",
"5/31/2019,124.230003,1285.149730\r\n",
"6/3/2019,123.849998,1285.149730\r\n",
"6/4/2019,121.279999,1285.149730\r\n",
"6/5/2019,124.949997,1285.149730\r\n",
"6/6/2019,126.440002,1295.749780\r\n",
"6/7/2019,129.190002,1295.749780\r\n",
"6/10/2019,132.399994,1295.749780\r\n",
"6/11/2019,133.880005,1295.749780\r\n",
"6/12/2019,131.399994,1295.749780\r\n",
"6/13/2019,131.979996,1295.749780\r\n",
"6/14/2019,132.259995,1295.749780\r\n",
"6/17/2019,132.630005,1295.749780\r\n",
"6/18/2019,134.190002,1295.749780\r\n",
"6/19/2019,135.000000,1295.749780\r\n",
"6/20/2019,137.449997,1295.749780\r\n",
"6/21/2019,136.580002,1295.749780\r\n",
"6/24/2019,137.000000,1295.749780\r\n",
"6/25/2019,137.250000,1295.749780\r\n",
"6/26/2019,134.350006,1295.749780\r\n",
"6/27/2019,134.139999,1295.749780\r\n",
"6/28/2019,134.570007,1295.749780\r\n",
"7/1/2019,136.630005,1295.749780\r\n",
"7/2/2019,136.119995,1295.749780\r\n",
"7/3/2019,136.800003,1295.749780\r\n",
"7/5/2019,135.940002,1295.749780\r\n",
"7/8/2019,136.399994,1295.749780\r\n",
"7/9/2019,136.000000,1295.749780\r\n",
"7/10/2019,137.130005,1295.749780\r\n",
"7/11/2019,138.199997,1295.749780\r\n",
"7/12/2019,138.850006,1295.749780\r\n",
"7/15/2019,139.440002,1295.749780\r\n",
"7/16/2019,138.960007,1295.749780\r\n",
"7/17/2019,137.699997,1295.749780\r\n",
"7/18/2019,135.550003,1295.749780\r\n",
"7/19/2019,140.220001,1337.779762\r\n",
"7/22/2019,137.410004,1337.779762\r\n",
"7/23/2019,139.759995,1337.779762\r\n",
"7/24/2019,138.899994,1337.779762\r\n",
"7/25/2019,140.429993,1337.779762\r\n",
"7/26/2019,140.369995,1337.779762\r\n",
"7/29/2019,141.500000,1337.779762\r\n",
"7/30/2019,140.139999,1337.779762\r\n",
"7/31/2019,140.330002,1337.779762\r\n",
"8/1/2019,137.000000,1337.779762\r\n",
"8/2/2019,138.089996,1337.779762\r\n",
"8/5/2019,133.300003,1337.779762\r\n",
"8/6/2019,133.800003,1337.779762\r\n",
"8/7/2019,133.789993,1337.779762\r\n",
"8/8/2019,136.600006,1337.779762\r\n",
"8/9/2019,138.610001,1352.269771\r\n",
"8/12/2019,137.070007,1352.269771\r\n",
"8/13/2019,136.050003,1352.269771\r\n",
"8/14/2019,136.360001,1352.269771\r\n",
"8/15/2019,134.389999,1352.269771\r\n",
"8/16/2019,134.880005,1352.269771\r\n",
"8/19/2019,137.850006,1359.289762\r\n",
"8/20/2019,138.210007,1359.289762\r\n",
"8/21/2019,138.550003,1359.289762\r\n",
"8/22/2019,138.660004,1359.289762\r\n",
"8/23/2019,137.190002,1359.289762\r\n",
"8/26/2019,134.990005,1359.289762\r\n",
"8/27/2019,136.389999,1359.289762\r\n",
"8/28/2019,134.880005,1359.289762\r\n",
"8/29/2019,137.250000,1381.889712\r\n",
"8/30/2019,139.149994,1381.889712\r\n",
"9/3/2019,136.610001,1381.889712\r\n",
"9/4/2019,137.300003,1381.889712\r\n",
"9/5/2019,139.110001,1381.889712\r\n",
"9/6/2019,140.029999,1381.889712\r\n",
"9/9/2019,139.589996,1381.889712\r\n",
"9/10/2019,136.800003,1381.889712\r\n",
"9/11/2019,135.910004,1381.889712\r\n",
"9/12/2019,137.850006,1392.389742\r\n",
"9/13/2019,137.779999,1392.389742\r\n",
"9/16/2019,135.830002,1392.389742\r\n",
"9/17/2019,136.960007,1392.389742\r\n",
"9/18/2019,137.360001,1392.389742\r\n",
"9/19/2019,140.300003,1437.089752\r\n",
"9/20/2019,141.009995,1437.089752\r\n",
"9/23/2019,139.229996,1437.089752\r\n",
"9/24/2019,140.360001,1437.089752\r\n",
"9/25/2019,137.500000,1437.089752\r\n",
"9/26/2019,139.440002,1456.489772\r\n",
"9/27/2019,140.149994,1456.489772\r\n",
"9/30/2019,138.050003,1456.489772\r\n",
"10/1/2019,139.660004,1472.589782\r\n",
"10/2/2019,136.250000,1472.589782\r\n",
"10/3/2019,134.949997,1472.589782\r\n",
"10/4/2019,136.750000,1472.589782\r\n",
"10/7/2019,137.139999,1472.589782\r\n",
"10/8/2019,137.080002,1472.589782\r\n",
"10/9/2019,137.460007,1472.589782\r\n",
"10/10/2019,138.490005,1494.989832\r\n",
"10/11/2019,140.119995,1494.989832\r\n",
"10/14/2019,139.690002,1494.989832\r\n",
"10/15/2019,140.059998,1494.989832\r\n",
"10/16/2019,140.789993,1494.989832\r\n",
"10/17/2019,140.949997,1494.989832\r\n",
"10/18/2019,139.759995,1494.989832\r\n",
"10/21/2019,138.449997,1494.989832\r\n",
"10/22/2019,138.970001,1500.189872\r\n",
"10/23/2019,136.880005,1500.189872\r\n",
"10/24/2019,139.389999,1525.289812\r\n",
"10/25/2019,139.339996,1525.289812\r\n",
"10/28/2019,144.399994,1525.289812\r\n",
"10/29/2019,144.080002,1525.289812\r\n",
"10/30/2019,143.520004,1525.289812\r\n",
"10/31/2019,144.899994,1525.289812\r\n",
"11/1/2019,144.259995,1525.289812\r\n",
"11/4/2019,144.830002,1525.289812\r\n",
"11/5/2019,144.970001,1525.289812\r\n",
"11/6/2019,144.369995,1525.289812\r\n",
"11/7/2019,143.839996,1525.289812\r\n",
"11/8/2019,143.979996,1525.289812\r\n",
"11/11/2019,145.339996,1525.289812\r\n",
"11/12/2019,146.279999,1525.289812\r\n",
"11/13/2019,146.740005,1525.289812\r\n",
"11/14/2019,147.020004,1525.289812\r\n",
"11/15/2019,148.929993,1525.289812\r\n",
"11/18/2019,150.070007,1525.289812\r\n",
"11/19/2019,150.880005,1525.289812\r\n",
"11/20/2019,150.309998,1525.289812\r\n",
"11/21/2019,149.399994,1525.289812\r\n",
"11/22/2019,150.070007,1525.289812\r\n",
"11/25/2019,150.000000,1525.289812\r\n",
"11/26/2019,151.360001,1525.289812\r\n",
"11/27/2019,152.330002,1525.289812\r\n",
"11/29/2019,152.100006,1525.289812\r\n",
"12/2/2019,151.809998,1525.289812\r\n",
"12/3/2019,147.490005,1525.289812\r\n",
"12/4/2019,150.139999,1551.789752\r\n",
"12/5/2019,150.050003,1551.789752\r\n",
"12/6/2019,150.990005,1551.789752\r\n",
"12/9/2019,151.070007,1551.789752\r\n",
"12/10/2019,151.289993,1551.789752\r\n",
"12/11/2019,151.539993,1551.789752\r\n",
"12/12/2019,151.649994,1551.789752\r\n",
"12/13/2019,153.000000,1551.789752\r\n",
"12/16/2019,155.110001,1551.789752\r\n",
"12/17/2019,155.449997,1551.789752\r\n",
"12/18/2019,154.300003,1551.789752\r\n",
"12/19/2019,154.000000,1551.789752\r\n",
"12/20/2019,157.350006,1551.789752\r\n",
"12/23/2019,158.119995,1551.789752\r\n",
"12/24/2019,157.479996,1551.789752\r\n",
"12/26/2019,157.559998,1551.789752\r\n",
"12/27/2019,159.449997,1551.789752\r\n",
"12/30/2019,158.990005,1551.789752\r\n",
"12/31/2019,156.770004,1551.789752\r\n",
"1/2/2020,158.779999,1551.789752\r\n",
"1/3/2020,158.320007,1551.789752\r\n",
"1/6/2020,157.080002,1551.789752\r\n",
"1/7/2020,159.320007,1551.789752\r\n",
"1/8/2020,158.929993,1551.789752\r\n",
"1/9/2020,161.839996,1551.789752\r\n",
"1/10/2020,162.820007,1551.789752\r\n",
"1/13/2020,161.759995,1551.789752\r\n",
"1/14/2020,163.389999,1551.789752\r\n",
"1/15/2020,162.619995,1551.789752\r\n",
"1/16/2020,164.350006,1551.789752\r\n",
"1/17/2020,167.419998,1551.789752\r\n",
"1/21/2020,166.679993,1551.789752\r\n",
"1/22/2020,167.399994,1551.789752\r\n",
"1/23/2020,166.190002,1551.789752\r\n",
"1/24/2020,167.509995,1551.789752\r\n",
"1/27/2020,161.149994,1551.789752\r\n",
"1/28/2020,163.779999,1575.459797\r\n",
"1/29/2020,167.839996,1575.459797\r\n",
"1/30/2020,174.050003,1575.459797\r\n",
"1/31/2020,172.210007,1575.459797\r\n",
"2/3/2020,170.429993,1575.459797\r\n",
"2/4/2020,177.139999,1575.459797\r\n",
"2/5/2020,184.029999,1575.459797\r\n",
"2/6/2020,180.970001,1575.459797\r\n",
"2/7/2020,182.850006,1575.459797\r\n",
"2/10/2020,183.580002,1575.459797\r\n",
"2/11/2020,190.649994,1575.459797\r\n",
"2/12/2020,185.580002,1575.459797\r\n",
"2/13/2020,183.080002,1575.459797\r\n",
"2/14/2020,183.250000,1575.459797\r\n",
"2/18/2020,185.610001,1575.459797\r\n",
"2/19/2020,188.059998,1575.459797\r\n",
"2/20/2020,186.949997,1575.459797\r\n",
"2/21/2020,183.169998,1575.459797\r\n",
"2/24/2020,167.770004,1575.459797\r\n",
"2/25/2020,174.199997,1575.459797\r\n",
"2/26/2020,169.710007,1575.459797\r\n",
"2/27/2020,163.320007,1575.459797\r\n",
"2/28/2020,152.410004,1575.459797\r\n",
"3/2/2020,165.309998,1575.459797\r\n",
"3/3/2020,173.800003,1575.459797\r\n",
"3/4/2020,168.490005,1575.459797\r\n",
"3/5/2020,166.050003,1575.459797\r\n",
"3/6/2020,162.610001,1575.459797\r\n",
"3/9/2020,151.000000,1575.459797\r\n",
"3/10/2020,158.160004,1575.459797\r\n",
"3/11/2020,157.130005,1575.459797\r\n",
"3/12/2020,145.300003,1575.459797\r\n",
"3/13/2020,147.500000,1575.459797\r\n",
"3/16/2020,140.000000,1575.459797\r\n",
"3/17/2020,140.000000,1575.459797\r\n",
"3/18/2020,138.000000,1575.459797\r\n",
"3/19/2020,142.770004,1575.459797\r\n",
"3/20/2020,146.000000,1575.459797\r\n",
"3/23/2020,137.009995,1575.459797\r\n",
"3/24/2020,143.750000,1575.459797\r\n",
"3/25/2020,148.910004,1575.459797\r\n",
"3/26/2020,148.399994,1575.459797\r\n",
"3/27/2020,151.750000,1431.279761\r\n",
"3/30/2020,152.440002,1431.279761\r\n",
"3/31/2020,159.399994,1431.279761\r\n",
"4/1/2020,153.000000,1431.279761\r\n",
"4/2/2020,151.860001,1431.279761\r\n",
"4/3/2020,155.100006,1431.279761\r\n",
"4/6/2020,160.320007,1431.279761\r\n",
"4/7/2020,169.589996,1431.279761\r\n",
"4/8/2020,165.669998,1431.279761\r\n",
"4/9/2020,166.360001,1431.279761\r\n",
"4/13/2020,164.350006,1431.279761\r\n",
"4/14/2020,169.000000,1431.279761\r\n",
"4/15/2020,171.199997,1431.279761\r\n",
"4/16/2020,174.300003,1431.279761\r\n",
"4/17/2020,179.500000,1431.279761\r\n",
"4/20/2020,176.630005,1431.279761\r\n",
"4/21/2020,173.500000,1431.279761\r\n",
"4/22/2020,171.389999,1431.279761\r\n",
"4/23/2020,174.110001,1431.279761\r\n",
"4/24/2020,172.059998,1431.279761\r\n",
"4/27/2020,176.589996,1431.279761\r\n",
"4/28/2020,175.589996,1431.279761\r\n",
"4/29/2020,173.220001,1431.279761\r\n",
"4/30/2020,180.000000,1431.279761\r\n",
"5/1/2020,175.800003,1431.279761\r\n",
"5/4/2020,174.490005,1431.279761\r\n",
"5/5/2020,180.619995,1431.279761\r\n",
"5/6/2020,182.080002,1431.279761\r\n",
"5/7/2020,184.169998,1431.279761\r\n",
"5/8/2020,184.979996,1431.279761\r\n",
"5/11/2020,183.149994,1431.279761\r\n",
"5/12/2020,186.800003,1431.279761\r\n",
"5/13/2020,182.550003,1431.279761\r\n",
"5/14/2020,177.539993,1431.279761\r\n",
"5/15/2020,179.059998,1443.439801\r\n",
"5/18/2020,185.750000,1443.439801\r\n",
"5/19/2020,185.029999,1443.439801\r\n",
"5/20/2020,184.809998,1443.439801\r\n",
"5/21/2020,185.399994,1443.439801\r\n",
"5/22/2020,183.190002,1443.439801\r\n",
"5/26/2020,186.339996,1443.439801\r\n",
"5/27/2020,180.199997,1443.439801\r\n",
"5/28/2020,180.740005,1443.439801\r\n",
"5/29/2020,182.729996,1463.679793\r\n",
"6/1/2020,182.539993,1463.679793\r\n",
"6/2/2020,184.250000,1477.359849\r\n",
"6/3/2020,184.820007,1477.359849\r\n",
"6/4/2020,184.300003,1477.359849\r\n",
"6/5/2020,182.619995,1477.359849\r\n",
"6/8/2020,185.940002,1503.919905\r\n",
"6/9/2020,188.000000,1503.919905\r\n",
"6/10/2020,191.130005,1503.919905\r\n",
"6/11/2020,193.130005,1503.919905\r\n",
"6/12/2020,190.539993,1503.919905\r\n",
"6/15/2020,184.580002,1503.919905\r\n",
"6/16/2020,192.889999,1570.399881\r\n",
"6/17/2020,195.029999,1570.399881\r\n",
"6/18/2020,194.000000,1570.399881\r\n",
"6/19/2020,198.589996,1570.399881\r\n",
"6/22/2020,195.789993,1570.399881\r\n",
"6/23/2020,202.089996,1570.399881\r\n",
"6/24/2020,201.600006,1570.399881\r\n",
"6/25/2020,197.800003,1570.399881\r\n",
"6/26/2020,199.729996,1570.399881\r\n",
"6/29/2020,195.779999,1570.399881\r\n",
"6/30/2020,197.880005,1570.399881\r\n",
"7/1/2020,203.139999,1570.399881\r\n",
"7/2/2020,205.679993,1570.399881\r\n",
"7/6/2020,208.830002,1570.399881\r\n",
"7/7/2020,210.449997,1570.399881\r\n",
"7/8/2020,210.070007,1570.399881\r\n",
"7/9/2020,216.330002,1570.399881\r\n",
"7/10/2020,213.619995,1570.399881\r\n",
"7/13/2020,214.479996,1570.399881\r\n",
"7/14/2020,206.130005,1570.399881\r\n",
"7/15/2020,209.559998,1570.399881\r\n",
"7/16/2020,205.399994,1570.399881\r\n",
"7/17/2020,204.470001,1570.399881\r\n",
"7/20/2020,205.000000,1570.399881\r\n",
"7/21/2020,213.660004,1634.729902\r\n",
"7/22/2020,209.199997,1634.729902\r\n",
"7/23/2020,207.190002,1634.729902\r\n",
"7/24/2020,200.419998,1634.729902\r\n",
"7/27/2020,201.470001,1634.729902\r\n",
"7/28/2020,203.610001,1634.729902\r\n",
"7/29/2020,202.500000,1634.729902\r\n",
"7/30/2020,201.000000,1634.729902\r\n",
"7/31/2020,204.399994,1634.729902\r\n",
"8/3/2020,211.520004,1723.529950\r\n",
"8/4/2020,214.169998,1723.529950\r\n",
"8/5/2020,214.899994,1723.529950\r\n",
"8/6/2020,212.339996,1723.529950\r\n",
"8/7/2020,214.850006,1723.529950\r\n",
"8/10/2020,211.669998,1723.529950\r\n",
"8/11/2020,207.160004,1723.529950\r\n",
"8/12/2020,205.289993,1723.529950\r\n",
"8/13/2020,209.440002,1741.769934\r\n",
"8/14/2020,208.759995,1741.769934\r\n",
"8/17/2020,209.600006,1741.769934\r\n",
"8/18/2020,210.529999,1741.769934\r\n",
"8/19/2020,211.490005,1741.769934\r\n",
"8/20/2020,209.539993,1741.769934\r\n",
"8/21/2020,213.860001,1741.769934\r\n",
"8/24/2020,214.789993,1741.769934\r\n",
"8/25/2020,213.100006,1741.769934\r\n",
"8/26/2020,217.880005,1741.769934\r\n",
"8/27/2020,222.889999,1741.769934\r\n",
"8/28/2020,228.179993,1741.769934\r\n",
"8/31/2020,227.000000,1741.769934\r\n",
"9/1/2020,225.509995,1741.769934\r\n",
"9/2/2020,227.970001,1741.769934\r\n",
"9/3/2020,229.270004,1741.769934\r\n",
"9/4/2020,215.100006,1741.769934\r\n",
"9/8/2020,206.500000,1741.769934\r\n",
"9/9/2020,207.600006,1741.769934\r\n",
"9/10/2020,213.399994,1741.769934\r\n",
"9/11/2020,207.199997,1741.769934\r\n",
"9/14/2020,204.240005,1741.769934\r\n",
"9/15/2020,208.419998,1741.769934\r\n",
"9/16/2020,210.619995,1741.769934\r\n",
"9/17/2020,200.050003,1741.769934\r\n",
"9/18/2020,202.800003,1741.769934\r\n",
"9/21/2020,197.190002,1741.769934\r\n",
"9/22/2020,205.059998,1741.769934\r\n",
"9/23/2020,207.899994,1741.769934\r\n",
"9/24/2020,199.850006,1741.769934\r\n",
"9/25/2020,203.550003,1741.769934\r\n",
"9/28/2020,210.880005,1708.009926\r\n",
"9/29/2020,209.350006,1708.009926\r\n",
"9/30/2020,207.729996,1708.009926\r\n",
"10/1/2020,213.490005,1741.129918\r\n",
"10/2/2020,208.000000,1741.129918\r\n",
"10/5/2020,207.220001,1741.129918\r\n",
"10/6/2020,208.820007,1741.129918\r\n",
"10/7/2020,207.059998,1741.129918\r\n",
"10/8/2020,210.509995,1741.129918\r\n",
"10/9/2020,211.229996,1741.129918\r\n",
"10/12/2020,218.789993,1741.129918\r\n",
"10/13/2020,222.720001,1741.129918\r\n",
"10/14/2020,223.000000,1741.129918\r\n",
"10/15/2020,217.100006,1741.129918\r\n",
"10/16/2020,220.149994,1741.129918\r\n",
"10/19/2020,220.419998,1741.129918\r\n",
"10/20/2020,215.800003,1741.129918\r\n",
"10/21/2020,213.119995,1741.129918\r\n",
"10/22/2020,213.929993,1741.129918\r\n",
"10/23/2020,215.029999,1741.129918\r\n",
"10/26/2020,213.850006,1741.129918\r\n",
"10/27/2020,211.589996,1741.129918\r\n",
"10/28/2020,207.669998,1741.129918\r\n",
"10/29/2020,204.070007,1741.129918\r\n",
"10/30/2020,203.500000,1741.129918\r\n",
"11/2/2020,204.289993,1741.129918\r\n",
"11/3/2020,203.889999,1741.129918\r\n",
"11/4/2020,214.020004,1742.489902\r\n",
"11/5/2020,222.039993,1742.489902\r\n",
"11/6/2020,222.259995,1742.489902\r\n",
"11/9/2020,224.440002,1742.489902\r\n",
"11/10/2020,214.500000,1742.489902\r\n",
"11/11/2020,212.389999,1742.489902\r\n",
"11/12/2020,217.210007,1781.049966\r\n",
"11/13/2020,216.360001,1781.049966\r\n",
"11/16/2020,214.869995,1781.049966\r\n",
"11/17/2020,216.100006,1781.049966\r\n",
"11/18/2020,213.649994,1781.049966\r\n",
"11/19/2020,211.380005,1781.049966\r\n",
"11/20/2020,212.199997,1781.049966\r\n",
"11/23/2020,210.949997,1781.049966\r\n",
"11/24/2020,209.589996,1781.049966\r\n",
"11/25/2020,215.110001,1810.889934\r\n",
"11/27/2020,214.850006,1810.889934\r\n",
"11/30/2020,214.100006,1810.889934\r\n",
"12/1/2020,214.509995,1810.889934\r\n",
"12/2/2020,214.880005,1810.889934\r\n",
"12/3/2020,214.610001,1810.889934\r\n",
"12/4/2020,214.220001,1810.889934\r\n",
"12/7/2020,214.369995,1810.889934\r\n",
"12/8/2020,213.970001,1810.889934\r\n",
"12/9/2020,215.160004,1819.369918\r\n",
"12/10/2020,211.770004,1819.369918\r\n",
"12/11/2020,210.050003,1819.369918\r\n",
"12/14/2020,213.100006,1819.369918\r\n",
"12/15/2020,215.169998,1846.569870\r\n",
"12/16/2020,214.750000,1846.569870\r\n",
"12/17/2020,219.869995,1846.569870\r\n",
"12/18/2020,218.589996,1846.569870\r\n",
"12/21/2020,217.550003,1846.569870\r\n",
"12/22/2020,222.690002,1846.569870\r\n",
"12/23/2020,223.110001,1846.569870\r\n",
"12/24/2020,221.419998,1846.569870\r\n",
"12/28/2020,224.449997,1846.569870\r\n",
"12/29/2020,226.309998,1846.569870\r\n",
"12/30/2020,225.229996,1846.569870\r\n",
"12/31/2020,221.699997,1846.569870\r\n",
"1/4/2021,222.529999,1846.569870\r\n",
"1/5/2021,217.259995,1846.569870\r\n",
"1/6/2021,212.169998,1846.569870\r\n",
"1/7/2021,214.039993,1846.569870\r\n",
"1/8/2021,218.679993,1857.929854\r\n",
"1/11/2021,218.470001,1857.929854\r\n",
"1/12/2021,216.500000,1857.929854\r\n",
"1/13/2021,214.020004,1857.929854\r\n",
"1/14/2021,215.910004,1857.929854\r\n",
"1/15/2021,213.520004,1857.929854\r\n",
"1/19/2021,213.750000,1857.929854\r\n",
"1/20/2021,217.699997,1857.929854\r\n",
"1/21/2021,224.699997,1907.769822\r\n",
"1/22/2021,227.080002,1907.769822\r\n",
"1/25/2021,229.119995,1907.769822\r\n",
"1/26/2021,231.860001,1907.769822\r\n",
"1/27/2021,238.000000,1907.769822\r\n",
"1/28/2021,235.610001,1907.769822\r\n",
"1/29/2021,235.990005,1907.769822\r\n",
"2/1/2021,235.059998,1907.769822\r\n",
"2/2/2021,241.300003,1907.769822\r\n",
"2/3/2021,239.570007,1907.769822\r\n",
"2/4/2021,242.660004,1907.769822\r\n",
"2/5/2021,242.229996,1907.769822\r\n",
"2/8/2021,243.149994,1907.769822\r\n",
"2/9/2021,241.869995,1907.769822\r\n",
"2/10/2021,245.000000,1907.769822\r\n",
"2/11/2021,244.779999,1907.769822\r\n",
"2/12/2021,243.929993,1907.769822\r\n",
"2/16/2021,245.029999,1907.769822\r\n",
"2/17/2021,241.320007,1907.769822\r\n",
"2/18/2021,241.800003,1907.769822\r\n",
"2/19/2021,243.750000,1907.769822\r\n",
"2/22/2021,237.419998,1907.769822\r\n",
"2/23/2021,230.330002,1907.769822\r\n",
"2/24/2021,230.009995,1907.769822\r\n",
"2/25/2021,232.080002,1907.769822\r\n",
"2/26/2021,231.529999,1907.769822\r\n",
"3/1/2021,235.899994,1907.769822\r\n",
"3/2/2021,237.009995,1907.769822\r\n",
"3/3/2021,232.160004,1907.769822\r\n",
"3/4/2021,226.740005,1907.769822\r\n",
"3/5/2021,229.520004,1907.769822\r\n",
"3/8/2021,231.369995,1907.769822\r\n",
"3/9/2021,232.880005,1907.769822\r\n",
"3/10/2021,237.000000,1904.409838\r\n",
"3/11/2021,234.960007,1904.409838\r\n",
"3/12/2021,234.009995,1904.409838\r\n",
"3/15/2021,234.960007,1904.409838\r\n",
"3/16/2021,236.279999,1914.969774\r\n",
"3/17/2021,236.149994,1914.969774\r\n",
"3/18/2021,232.559998,1914.969774\r\n",
"3/19/2021,231.020004,1914.969774\r\n",
"3/22/2021,230.270004,1914.969774\r\n",
"3/23/2021,237.490005,1954.409830\r\n",
"3/24/2021,237.850006,1954.409830\r\n",
"3/25/2021,235.300003,1954.409830\r\n",
"3/26/2021,231.550003,1954.409830\r\n",
"3/29/2021,236.589996,1994.729774\r\n",
"3/30/2021,233.529999,1994.729774\r\n",
"3/31/2021,232.910004,1994.729774\r\n",
"4/1/2021,238.470001,2034.249790\r\n",
"4/5/2021,242.759995,2034.249790\r\n",
"4/6/2021,247.610001,2034.249790\r\n",
"4/7/2021,247.809998,2034.249790\r\n",
"4/8/2021,252.770004,2034.249790\r\n",
"4/9/2021,252.869995,2034.249790\r\n",
"4/12/2021,254.710007,2034.249790\r\n",
"4/13/2021,257.260010,2034.249790\r\n",
"4/14/2021,257.480011,2034.249790\r\n",
"4/15/2021,257.929993,2034.249790\r\n",
"4/16/2021,259.470001,2034.249790\r\n",
"4/19/2021,260.190002,2034.249790\r\n",
"4/20/2021,257.820007,2034.249790\r\n",
"4/21/2021,258.940002,2034.249790\r\n",
"4/22/2021,260.209991,2034.249790\r\n",
"4/23/2021,257.880005,2034.249790\r\n",
"4/26/2021,261.660004,2034.249790\r\n",
"4/27/2021,261.579987,2034.249790\r\n",
"4/28/2021,256.079987,2034.249790\r\n",
"4/29/2021,255.460007,2034.249790\r\n",
"4/30/2021,249.740005,2034.249790\r\n",
"5/3/2021,253.399994,2034.249790\r\n",
"5/4/2021,250.970001,2034.249790\r\n",
"5/5/2021,249.059998,2034.249790\r\n",
"5/6/2021,246.449997,2034.249790\r\n",
"5/7/2021,252.149994,2034.249790\r\n",
"5/10/2021,250.869995,2034.249790\r\n",
"5/11/2021,244.550003,2034.249790\r\n",
"5/12/2021,242.169998,2034.249790\r\n",
"5/13/2021,241.800003,2034.249790\r\n",
"5/14/2021,245.580002,2034.249790\r\n",
"5/17/2021,246.550003,2034.249790\r\n",
"5/18/2021,246.270004,2034.249790\r\n",
"5/19/2021,239.309998,2034.249790\r\n",
"5/20/2021,243.960007,2034.249790\r\n",
"5/21/2021,247.570007,2034.249790\r\n",
"5/24/2021,247.789993,2034.249790\r\n",
"5/25/2021,251.770004,2050.489782\r\n",
"5/26/2021,251.429993,2050.489782\r\n",
"5/27/2021,251.169998,2050.489782\r\n",
"5/28/2021,251.000000,2050.489782\r\n",
"6/1/2021,251.229996,2050.489782\r\n",
"6/2/2021,248.130005,2050.489782\r\n",
"6/3/2021,245.220001,2050.489782\r\n",
"6/4/2021,247.759995,2070.809734\r\n",
"6/7/2021,249.979996,2070.809734\r\n",
"6/8/2021,255.160004,2070.809734\r\n",
"6/9/2021,253.809998,2070.809734\r\n",
"6/10/2021,254.289993,2070.809734\r\n",
"6/11/2021,257.989990,2070.809734\r\n",
"6/14/2021,257.899994,2070.809734\r\n",
"6/15/2021,259.769989,2070.809734\r\n",
"6/16/2021,259.399994,2070.809734\r\n",
"6/17/2021,256.070007,2070.809734\r\n",
"6/18/2021,259.630005,2070.809734\r\n",
"6/21/2021,259.820007,2070.809734\r\n",
"6/22/2021,262.720001,2070.809734\r\n",
"6/23/2021,265.989990,2070.809734\r\n",
"6/24/2021,266.160004,2070.809734\r\n",
"6/25/2021,266.230011,2070.809734\r\n",
"6/28/2021,266.190002,2070.809734\r\n",
"6/29/2021,268.869995,2070.809734\r\n",
"6/30/2021,270.690002,2070.809734\r\n",
"7/1/2021,269.609985,2070.809734\r\n",
"7/2/2021,272.820007,2070.809734\r\n",
"7/6/2021,278.029999,2070.809734\r\n",
"7/7/2021,279.399994,2070.809734\r\n",
"7/8/2021,276.899994,2070.809734\r\n",
"7/9/2021,275.720001,2070.809734\r\n",
"7/12/2021,279.160004,2070.809734\r\n",
"7/13/2021,277.519989,2070.809734\r\n",
"7/14/2021,282.350006,2070.809734\r\n",
"7/15/2021,282.000000,2070.809734\r\n",
"7/16/2021,282.070007,2070.809734\r\n",
"7/19/2021,278.929993,2070.809734\r\n",
"7/20/2021,278.029999,2070.809734\r\n",
"7/21/2021,278.899994,2070.809734\r\n",
"7/22/2021,283.839996,2070.809734\r\n",
"7/23/2021,287.369995,2070.809734\r\n",
"7/26/2021,289.000000,2070.809734\r\n",
"7/27/2021,289.429993,2070.809734\r\n",
"7/28/2021,288.989990,2070.809734\r\n",
"7/29/2021,286.239990,2070.809734\r\n",
"7/30/2021,285.170013,2070.809734\r\n",
"8/2/2021,286.359985,2070.809734\r\n",
"8/3/2021,285.420013,2070.809734\r\n",
"8/4/2021,286.220001,2070.809734\r\n",
"8/5/2021,286.880005,2070.809734\r\n",
"8/6/2021,288.510010,2070.809734\r\n",
"8/9/2021,289.750000,2070.809734\r\n",
"8/10/2021,288.799988,2070.809734\r\n",
"8/11/2021,287.209991,2070.809734\r\n",
"8/12/2021,286.630005,2070.809734\r\n",
"8/13/2021,289.480011,2070.809734\r\n",
"8/16/2021,293.190002,2070.809734\r\n",
"8/17/2021,292.390015,2070.809734\r\n",
"8/18/2021,292.040009,2070.809734\r\n",
"8/19/2021,288.690002,2070.809734\r\n",
"8/20/2021,299.720001,2070.809734\r\n",
"8/23/2021,303.250000,2070.809734\r\n",
"8/24/2021,305.019989,2070.809734\r\n",
"8/25/2021,304.299988,2070.809734\r\n",
"8/26/2021,300.989990,2070.809734\r\n",
"8/27/2021,298.989990,2070.809734\r\n",
"8/30/2021,301.119995,2070.809734\r\n",
"8/31/2021,304.420013,2070.809734\r\n",
"9/1/2021,302.869995,2070.809734\r\n",
"9/2/2021,302.200012,2070.809734\r\n",
"9/3/2021,300.989990,2070.809734\r\n",
"9/7/2021,301.010010,2070.809734\r\n",
"9/8/2021,299.779999,2070.809734\r\n",
"9/9/2021,300.820007,2070.809734\r\n",
"9/10/2021,298.420013,2070.809734\r\n",
"9/13/2021,297.549988,2070.809734\r\n",
"9/14/2021,299.559998,2070.809734\r\n",
"9/15/2021,303.260010,2099.849716\r\n",
"9/16/2021,303.760010,2099.849716\r\n",
"9/17/2021,304.170013,2099.849716\r\n",
"9/20/2021,296.329987,2099.849716\r\n",
"9/21/2021,295.690002,2099.849716\r\n",
"9/22/2021,296.730011,2099.849716\r\n",
"9/23/2021,298.850006,2099.849716\r\n",
"9/24/2021,298.230011,2099.849716\r\n",
"9/27/2021,296.140015,2099.849716\r\n",
"9/28/2021,289.799988,2099.849716\r\n",
"9/29/2021,285.100006,2099.849716\r\n",
"9/30/2021,285.709991,2099.849716\r\n",
"10/1/2021,282.119995,2099.849716\r\n",
"10/4/2021,287.399994,2099.849716\r\n",
"10/5/2021,284.049988,2099.849716\r\n",
"10/6/2021,285.779999,2099.849716\r\n",
"10/7/2021,295.179993,2091.799758\r\n",
"10/8/2021,296.220001,2091.799758\r\n",
"10/11/2021,292.920013,2091.799758\r\n",
"10/12/2021,295.339996,2108.739639\r\n",
"10/13/2021,294.910004,2108.739639\r\n",
"10/14/2021,299.209991,2108.739639\r\n",
"10/15/2021,302.339996,2108.739639\r\n",
"10/18/2021,303.570007,2108.739639\r\n",
"10/19/2021,308.350006,2108.739639\r\n",
"10/20/2021,309.209991,2108.739639\r\n",
"10/21/2021,307.170013,2108.739639\r\n",
"10/22/2021,310.399994,2108.739639\r\n",
"10/25/2021,309.359985,2108.739639\r\n",
"10/26/2021,311.000000,2108.739639\r\n",
"10/27/2021,316.000000,2108.739639\r\n",
"10/28/2021,324.329987,2108.739639\r\n",
"10/29/2021,324.130005,2108.739639\r\n",
"11/1/2021,331.359985,2108.739639\r\n",
"11/2/2021,330.309998,2108.739639\r\n",
"11/3/2021,333.899994,2108.739639\r\n",
"11/4/2021,332.890015,2108.739639\r\n",
"11/5/2021,338.510010,2108.739639\r\n",
"11/8/2021,337.299988,2108.739639\r\n",
"11/9/2021,337.109985,2108.739639\r\n",
"11/10/2021,334.570007,2108.739639\r\n",
"11/11/2021,331.250000,2108.739639\r\n",
"11/12/2021,333.920013,2108.739639\r\n",
"11/15/2021,337.540009,2108.739639\r\n",
"11/16/2021,335.679993,2108.739639\r\n",
"11/17/2021,338.940002,2108.739639\r\n",
"11/18/2021,338.179993,2108.739639\r\n",
"11/19/2021,342.640015,2108.739639\r\n",
"11/22/2021,344.619995,2108.739639\r\n",
"11/23/2021,337.049988,2108.739639\r\n",
"11/24/2021,336.279999,2108.739639\r\n",
"11/26/2021,334.350006,2108.739639\r\n",
"11/29/2021,334.940002,2108.739639\r\n",
"11/30/2021,335.320007,2108.739639\r\n",
"12/1/2021,335.130005,2108.739639\r\n",
"12/2/2021,330.299988,2108.739639\r\n",
"12/3/2021,331.989990,2108.739639\r\n",
"12/6/2021,323.950012,2108.739639\r\n",
"12/7/2021,331.640015,2108.739639\r\n",
"12/8/2021,335.309998,2114.499591\r\n",
"12/9/2021,334.410004,2114.499591\r\n",
"12/10/2021,334.980011,2114.499591\r\n",
"12/13/2021,340.679993,2152.119525\r\n",
"12/14/2021,333.220001,2152.119525\r\n",
"12/15/2021,328.609985,2152.119525\r\n",
"12/16/2021,335.709991,2167.059465\r\n",
"12/17/2021,320.880005,2167.059465\r\n",
"12/20/2021,320.049988,2167.059465\r\n",
"12/21/2021,323.290009,2167.059465\r\n",
"12/22/2021,328.299988,2167.059465\r\n",
"12/23/2021,332.750000,2238.279435\r\n",
"12/27/2021,335.459991,2238.279435\r\n",
"12/28/2021,343.149994,2238.279435\r\n",
"12/29/2021,341.299988,2238.279435\r\n",
"12/30/2021,341.910004,2238.279435\r\n",
"12/31/2021,338.510010,2238.279435\r\n",
"1/3/2022,335.350006,2238.279435\r\n",
"1/4/2022,334.829987,2238.279435\r\n",
"1/5/2022,325.859985,2238.279435\r\n",
"1/6/2022,313.149994,2238.279435\r\n",
"1/7/2022,314.149994,2238.279435\r\n",
"1/10/2022,309.489990,2238.279435\r\n",
"1/11/2022,313.380005,2238.279435\r\n",
"1/12/2022,319.670013,2238.279435\r\n",
"1/13/2022,320.470001,2238.279435\r\n",
"1/14/2022,304.250000,2238.279435\r\n",
"1/18/2022,304.070007,2238.279435\r\n",
"1/19/2022,306.290009,2238.279435\r\n",
"1/20/2022,309.070007,2238.279435\r\n",
"1/21/2022,302.690002,2238.279435\r\n",
"1/24/2022,292.200012,2238.279435\r\n",
"1/25/2022,291.519989,2238.279435\r\n",
"1/26/2022,307.989990,2238.279435\r\n",
"1/27/2022,302.660004,2238.279435\r\n",
"1/28/2022,300.230011,2238.279435\r\n",
"1/31/2022,308.950012,2238.279435\r\n",
"2/1/2022,310.410004,2145.579549\r\n",
"2/2/2022,309.630005,2145.579549\r\n",
"2/3/2022,309.489990,2145.579549\r\n",
"2/4/2022,300.209991,2145.579549\r\n",
"2/7/2022,306.170013,2145.579549\r\n",
"2/8/2022,301.250000,2145.579549\r\n",
"2/9/2022,309.869995,2213.199577\r\n",
"2/10/2022,304.040009,2213.199577\r\n",
"2/11/2022,303.190002,2213.199577\r\n",
"2/14/2022,293.769989,2213.199577\r\n",
"2/15/2022,300.010010,2213.199577\r\n",
"2/16/2022,298.369995,2213.199577\r\n",
"2/17/2022,296.359985,2213.199577\r\n",
"2/18/2022,293.049988,2213.199577\r\n",
"2/22/2022,285.000000,2213.199577\r\n",
"2/23/2022,290.179993,2213.199577\r\n",
"2/24/2022,272.510010,2213.199577\r\n",
"2/25/2022,295.140015,2213.199577\r\n",
"2/28/2022,294.309998,2213.199577\r\n",
"3/1/2022,296.399994,2213.199577\r\n",
"3/2/2022,295.359985,2213.199577\r\n",
"3/3/2022,302.890015,2205.149619\r\n",
"3/4/2022,294.290009,2205.149619\r\n",
"3/7/2022,288.529999,2205.149619\r\n",
"3/8/2022,277.799988,2205.149619\r\n",
"3/9/2022,283.440002,2205.149619\r\n",
"3/10/2022,283.019989,2205.149619\r\n",
"3/11/2022,287.959991,2205.149619\r\n",
"3/14/2022,280.339996,2205.149619\r\n",
"3/15/2022,280.350006,2205.149619\r\n",
"3/16/2022,289.109985,2205.149619\r\n",
"3/17/2022,293.290009,2198.149619\r\n",
"3/18/2022,295.369995,2198.149619\r\n",
"3/21/2022,298.890015,2198.149619\r\n",
"3/22/2022,299.799988,2198.149619\r\n",
"3/23/2022,300.510010,2198.149619\r\n",
"3/24/2022,299.140015,2198.149619\r\n",
"3/25/2022,305.230011,2198.149619\r\n",
"3/28/2022,304.329987,2198.149619\r\n",
"3/29/2022,313.910004,2198.149619\r\n",
"3/30/2022,313.760010,2198.149619\r\n",
"3/31/2022,313.899994,2198.149619\r\n",
"4/1/2022,309.369995,2198.149619\r\n",
"4/4/2022,310.089996,2198.149619\r\n",
"4/5/2022,313.269989,2198.149619\r\n",
"4/6/2022,305.190002,2198.149619\r\n",
"4/7/2022,296.660004,2198.149619\r\n",
"4/8/2022,300.440002,2198.149619\r\n",
"4/11/2022,291.790009,2198.149619\r\n",
"4/12/2022,289.239990,2198.149619\r\n",
"4/13/2022,282.730011,2198.149619\r\n",
"4/14/2022,288.089996,2198.149619\r\n",
"4/18/2022,278.910004,2198.149619\r\n",
"4/19/2022,279.380005,2198.149619\r\n",
"4/20/2022,289.399994,2198.149619\r\n",
"4/21/2022,288.579987,2198.149619\r\n",
"4/22/2022,281.679993,2198.149619\r\n",
"4/25/2022,273.290009,2198.149619\r\n",
"4/26/2022,277.500000,2198.149619\r\n",
"4/27/2022,282.100006,2198.149619\r\n",
"4/28/2022,285.190002,2198.149619\r\n",
"4/29/2022,288.609985,2198.149619\r\n",
"5/2/2022,277.709991,2198.149619\r\n",
"5/3/2022,283.959991,2198.149619\r\n",
"5/4/2022,282.589996,2198.149619\r\n",
"5/5/2022,285.540009,2120.309654\r\n",
"5/6/2022,274.809998,2120.309654\r\n",
"5/9/2022,270.059998,2120.309654\r\n",
"5/10/2022,271.690002,2120.309654\r\n",
"5/11/2022,265.679993,2120.309654\r\n",
"5/12/2022,257.690002,2120.309654\r\n",
"5/13/2022,257.350006,2120.309654\r\n",
"5/16/2022,259.959991,2120.309654\r\n",
"5/17/2022,266.109985,2120.309654\r\n",
"5/18/2022,263.000000,2120.309654\r\n",
"5/19/2022,253.899994,2120.309654\r\n",
"5/20/2022,257.239990,2120.309654\r\n",
"5/23/2022,255.490005,2120.309654\r\n",
"5/24/2022,257.890015,2120.309654\r\n",
"5/25/2022,258.140015,2120.309654\r\n",
"5/26/2022,262.269989,2120.309654\r\n",
"5/27/2022,268.480011,2075.999745\r\n",
"5/31/2022,272.529999,2075.999745\r\n",
"6/1/2022,275.200012,2075.999745\r\n",
"6/2/2022,264.450012,2075.999745\r\n",
"6/3/2022,270.309998,2117.019647\r\n",
"6/6/2022,272.059998,2117.019647\r\n",
"6/7/2022,266.640015,2117.019647\r\n",
"6/8/2022,271.709991,2117.019647\r\n",
"6/9/2022,267.779999,2117.019647\r\n",
"6/10/2022,260.579987,2117.019647\r\n",
"6/13/2022,245.110001,2117.019647\r\n",
"6/14/2022,243.860001,2117.019647\r\n",
"6/15/2022,248.309998,2117.019647\r\n",
"6/16/2022,245.979996,2117.019647\r\n",
"6/17/2022,244.699997,2117.019647\r\n",
"6/21/2022,250.259995,2117.019647\r\n",
"6/22/2022,251.889999,2117.019647\r\n",
"6/23/2022,255.570007,2117.019647\r\n",
"6/24/2022,261.809998,2126.859735\r\n",
"6/27/2022,268.209991,2126.859735\r\n",
"6/28/2022,263.980011,2126.859735\r\n",
"6/29/2022,257.589996,2126.859735\r\n",
"6/30/2022,257.049988,2126.859735\r\n",
"7/1/2022,256.390015,2126.859735\r\n",
"7/5/2022,256.160004,2126.859735\r\n",
"7/6/2022,263.750000,2176.139767\r\n",
"7/7/2022,265.119995,2176.139767\r\n",
"7/8/2022,264.790009,2176.139767\r\n",
"7/11/2022,265.649994,2176.139767\r\n",
"7/12/2022,265.880005,2176.139767\r\n",
"7/13/2022,250.190002,2176.139767\r\n",
"7/14/2022,250.570007,2176.139767\r\n",
"7/15/2022,255.720001,2176.139767\r\n",
"7/18/2022,259.750000,2252.619751\r\n",
"7/19/2022,257.579987,2252.619751\r\n",
"7/20/2022,259.899994,2271.179807\r\n",
"7/21/2022,259.790009,2271.179807\r\n",
"7/22/2022,265.239990,2271.179807\r\n",
"7/25/2022,261.000000,2271.179807\r\n",
"7/26/2022,259.859985,2271.179807\r\n",
"7/27/2022,261.160004,2271.179807\r\n",
"7/28/2022,269.750000,2271.179807\r\n",
"7/29/2022,277.700012,2271.179807\r\n",
"8/1/2022,277.820007,2271.179807\r\n",
"8/2/2022,276.000000,2271.179807\r\n",
"8/3/2022,276.760010,2271.179807\r\n",
"8/4/2022,281.799988,2271.179807\r\n",
"8/5/2022,279.149994,2271.179807\r\n",
"8/8/2022,284.049988,2271.179807\r\n",
"8/9/2022,279.640015,2271.179807\r\n",
"8/10/2022,288.170013,2271.179807\r\n",
"8/11/2022,290.850006,2271.179807\r\n",
"8/12/2022,288.480011,2271.179807\r\n",
"8/15/2022,291.000000,2271.179807\r\n",
"8/16/2022,291.989990,2271.179807\r\n",
"8/17/2022,289.739990,2271.179807\r\n",
"8/18/2022,290.190002,2271.179807\r\n",
"8/19/2022,288.899994,2271.179807\r\n",
"8/22/2022,282.079987,2271.179807\r\n",
"8/23/2022,276.440002,2271.179807\r\n",
"8/24/2022,275.410004,2271.179807\r\n",
"8/25/2022,277.329987,2271.179807\r\n",
"8/26/2022,279.079987,2271.179807\r\n",
"8/29/2022,265.850006,2271.179807\r\n",
"8/30/2022,266.670013,2271.179807\r\n",
"8/31/2022,265.390015,2271.179807\r\n",
"9/1/2022,258.869995,2271.179807\r\n",
"9/2/2022,261.700012,2271.179807\r\n",
"9/6/2022,256.200012,2271.179807\r\n",
"9/7/2022,254.699997,2271.179807\r\n",
"9/8/2022,257.510010,2271.179807\r\n",
"9/9/2022,260.500000,2271.179807\r\n",
"9/12/2022,265.779999,2271.179807\r\n",
"9/13/2022,258.839996,2271.179807\r\n",
"9/14/2022,253.529999,2271.179807\r\n",
"9/15/2022,249.770004,2271.179807\r\n",
"9/16/2022,244.259995,2271.179807\r\n",
"9/19/2022,242.470001,2271.179807\r\n",
"9/20/2022,242.070007,2271.179807\r\n",
"9/21/2022,244.270004,2271.179807\r\n",
"9/22/2022,237.869995,2271.179807\r\n",
"9/23/2022,239.539993,2271.179807\r\n",
"9/26/2022,237.050003,2271.179807\r\n",
"9/27/2022,239.979996,2271.179807\r\n",
"9/28/2022,236.809998,2271.179807\r\n",
"9/29/2022,238.889999,2271.179807\r\n",
"9/30/2022,238.289993,2271.179807\r\n",
"10/3/2022,235.410004,2271.179807\r\n",
"10/4/2022,245.089996,2271.179807\r\n",
"10/5/2022,245.990005,2027.579831\r\n",
"10/6/2022,247.929993,2027.579831\r\n",
"10/7/2022,240.899994,2027.579831\r\n",
"10/10/2022,233.050003,2027.579831\r\n",
"10/11/2022,227.619995,2027.579831\r\n",
"10/12/2022,225.399994,2027.579831\r\n",
"10/13/2022,219.850006,2027.579831\r\n",
"10/14/2022,235.539993,2027.579831\r\n",
"10/17/2022,235.820007,2027.579831\r\n",
"10/18/2022,243.240005,2046.299919\r\n",
"10/19/2022,237.039993,2046.299919\r\n",
"10/20/2022,235.770004,2046.299919\r\n",
"10/21/2022,234.740005,2046.299919\r\n",
"10/24/2022,243.759995,2100.059935\r\n",
"10/25/2022,247.259995,2100.059935\r\n",
"10/26/2022,231.169998,2100.059935\r\n",
"10/27/2022,231.039993,2100.059935\r\n",
"10/28/2022,226.240005,2100.059935\r\n",
"10/31/2022,233.759995,2100.059935\r\n",
"11/1/2022,234.600006,2100.059935\r\n",
"11/2/2022,229.460007,2100.059935\r\n",
"11/3/2022,220.089996,2100.059935\r\n",
"11/4/2022,217.550003,2100.059935\r\n",
"11/7/2022,221.990005,2100.059935\r\n",
"11/8/2022,228.699997,2100.059935\r\n",
"11/9/2022,227.369995,2100.059935\r\n",
"11/10/2022,235.429993,2138.399890\r\n",
"11/11/2022,242.990005,2138.399890\r\n",
"11/14/2022,241.990005,2138.399890\r\n",
"11/15/2022,245.660004,2138.399890\r\n",
"11/16/2022,242.789993,2138.399890\r\n",
"11/17/2022,237.779999,2138.399890\r\n",
"11/18/2022,243.509995,2138.399890\r\n",
"11/21/2022,241.429993,2138.399890\r\n",
"11/22/2022,243.589996,2138.399890\r\n",
"11/23/2022,245.110001,2138.399890\r\n",
"11/25/2022,247.309998,2138.399890\r\n",
"11/28/2022,246.080002,2138.399890\r\n",
"11/29/2022,241.399994,2138.399890\r\n",
"11/30/2022,240.570007,2138.399890\r\n",
"12/1/2022,253.869995,2138.399890\r\n",
"12/2/2022,249.820007,2138.399890\r\n",
"12/5/2022,252.009995,2138.399890\r\n",
"12/6/2022,250.820007,2138.399890\r\n",
"12/7/2022,244.830002,2138.399890\r\n",
"12/8/2022,244.839996,2138.399890\r\n",
"12/9/2022,244.699997,2138.399890\r\n",
"12/12/2022,247.449997,2160.399890\r\n",
"12/13/2022,261.690002,2160.399890\r\n",
"12/14/2022,257.130005,2160.399890\r\n",
"12/15/2022,253.720001,2160.399890\r\n",
"12/16/2022,248.550003,2160.399890\r\n",
"12/19/2022,244.860001,2160.399890\r\n",
"12/20/2022,239.399994,2160.399890\r\n",
"12/21/2022,241.690002,2160.399890\r\n",
"12/22/2022,241.259995,2160.399890\r\n",
"12/23/2022,236.110001,2160.399890\r\n",
"12/27/2022,238.699997,2160.399890\r\n",
"12/28/2022,236.889999,2160.399890\r\n",
"12/29/2022,235.649994,2160.399890\r\n",
"12/30/2022,238.210007,2160.399890\r\n",
"1/3/2023,243.080002,2160.399890\r\n",
"1/4/2023,232.279999,2160.399890\r\n",
"1/5/2023,227.199997,2160.399890\r\n",
"1/6/2023,223.000000,2160.399890\r\n",
"1/9/2023,226.449997,2160.399890\r\n",
"1/10/2023,227.759995,2160.399890\r\n",
"1/11/2023,231.289993,2160.399890\r\n",
"1/12/2023,235.259995,2160.399890\r\n",
"1/13/2023,237.000000,2097.519882\r\n",
"1/17/2023,237.970001,2097.519882\r\n",
"1/18/2023,241.570007,2097.519882\r\n",
"1/19/2023,233.779999,2097.519882\r\n",
"1/20/2023,234.860001,2097.519882\r\n",
"1/23/2023,241.100006,2156.079938\r\n",
"1/24/2023,242.500000,2156.079938\r\n",
"1/25/2023,234.479996,2156.079938\r\n",
"1/26/2023,243.649994,2238.609920\r\n",
"1/27/2023,248.990005,2238.609920\r\n",
"1/30/2023,244.509995,2238.609920\r\n",
"1/31/2023,243.449997,2238.609920\r\n",
"2/1/2023,248.000000,2238.609920\r\n",
"2/2/2023,258.820007,2238.609920\r\n",
"2/3/2023,259.540009,2238.609920\r\n",
"2/6/2023,257.440002,2238.609920\r\n",
"2/7/2023,260.529999,2238.609920\r\n",
"2/8/2023,273.200012,2238.609920\r\n",
"2/9/2023,273.799988,2238.609920\r\n",
"2/10/2023,261.529999,2238.609920\r\n",
"2/13/2023,267.640015,2238.609920\r\n",
"2/14/2023,272.670013,2238.609920\r\n",
"2/15/2023,268.320007,2238.609920\r\n",
"2/16/2023,264.019989,2238.609920\r\n",
"2/17/2023,259.390015,2238.609920\r\n",
"2/21/2023,254.479996,2238.609920\r\n",
"2/22/2023,254.089996,2238.609920\r\n",
"2/23/2023,255.559998,2238.609920\r\n",
"2/24/2023,249.960007,2238.609920\r\n",
"2/27/2023,252.460007,2238.609920\r\n",
"2/28/2023,249.070007,2238.609920\r\n",
"3/1/2023,250.759995,2238.609920\r\n",
"3/2/2023,246.550003,2238.609920\r\n",
"3/3/2023,252.190002,2238.609920\r\n",
"3/6/2023,256.429993,2238.609920\r\n",
"3/7/2023,256.299988,2238.609920\r\n",
"3/8/2023,254.039993,2238.609920\r\n",
"3/9/2023,255.820007,2238.609920\r\n",
"3/10/2023,251.080002,2238.609920\r\n",
"3/13/2023,247.399994,2238.609920\r\n",
"3/14/2023,256.750000,2256.769952\r\n",
"3/15/2023,259.980011,2256.769952\r\n",
"3/16/2023,265.209991,2256.769952\r\n",
"3/17/2023,278.260010,2256.769952\r\n",
"3/20/2023,276.980011,2256.769952\r\n",
"3/21/2023,274.880005,2256.769952\r\n",
"3/22/2023,273.399994,2256.769952\r\n",
"3/23/2023,277.940002,2256.769952\r\n",
"3/24/2023,277.239990,2256.769952\r\n",
"3/27/2023,280.500000,2256.769952\r\n",
"3/28/2023,275.790009,2256.769952\r\n",
"3/29/2023,278.959991,2256.769952\r\n",
"3/30/2023,284.230011,2256.769952\r\n",
"3/31/2023,283.730011,2256.769952\r\n",
"4/3/2023,286.519989,2256.769952\r\n",
"4/4/2023,287.230011,2256.769952\r\n",
"4/5/2023,285.850006,2256.769952\r\n",
"4/6/2023,283.209991,2256.769952\r\n",
"4/10/2023,289.209991,2256.769952\r\n",
"4/11/2023,285.750000,2256.769952\r\n",
"4/12/2023,284.790009,2256.769952\r\n",
"4/13/2023,283.589996,2256.769952\r\n",
"4/14/2023,287.000000,2256.769952\r\n",
"4/17/2023,289.929993,2256.769952\r\n",
"4/18/2023,291.570007,2256.769952\r\n",
"4/19/2023,285.989990,2256.769952\r\n",
"4/20/2023,285.250000,2256.769952\r\n",
"4/21/2023,285.010010,2256.769952\r\n",
"4/24/2023,282.089996,2256.769952\r\n",
"4/25/2023,279.510010,2256.769952\r\n",
"4/26/2023,296.700012,2373.650080\r\n",
"4/27/2023,295.970001,2373.650080\r\n",
"4/28/2023,304.010010,2373.650080\r\n",
"5/1/2023,306.970001,2373.650080\r\n",
"5/2/2023,307.760010,2373.650080\r\n",
"5/3/2023,306.619995,2373.650080\r\n",
"5/4/2023,306.239990,2373.650080\r\n",
"5/5/2023,305.720001,2373.650080\r\n",
"5/8/2023,310.130005,2373.650080\r\n",
"5/9/2023,308.000000,2373.650080\r\n",
"5/10/2023,308.619995,2373.650080\r\n",
"5/11/2023,310.100006,2373.650080\r\n",
"5/12/2023,310.549988,2373.650080\r\n",
"5/15/2023,309.100006,2373.650080\r\n",
"5/16/2023,309.829987,2373.650080\r\n",
"5/17/2023,312.290009,2373.650080\r\n",
"5/18/2023,314.529999,2373.650080\r\n",
"5/19/2023,316.739990,2373.650080\r\n",
"5/22/2023,318.600006,2373.650080\r\n",
"5/23/2023,320.029999,2373.650080\r\n",
"5/24/2023,314.730011,2373.650080\r\n",
"5/25/2023,323.239990,2373.650080\r\n",
"5/26/2023,324.019989,2373.650080\r\n",
"5/30/2023,335.230011,2373.650080\r\n",
"5/31/2023,332.290009,2373.650080\r\n",
"6/1/2023,325.929993,2373.650080\r\n",
"6/2/2023,334.250000,2373.650080\r\n",
"6/5/2023,335.220001,2373.650080\r\n",
"6/6/2023,335.329987,2373.650080\r\n",
"6/7/2023,331.649994,2373.650080\r\n",
"6/8/2023,323.940002,2373.650080\r\n",
"6/9/2023,324.989990,2373.650080\r\n",
"6/12/2023,328.579987,2373.650080\r\n",
"6/13/2023,334.470001,2373.650080\r\n",
"6/14/2023,334.339996,2373.650080\r\n",
"6/15/2023,337.480011,2373.650080\r\n",
"6/16/2023,351.320007,2373.650080\r\n",
"6/20/2023,339.309998,2373.650080\r\n",
"6/21/2023,336.369995,2373.650080\r\n",
"6/22/2023,334.119995,2373.650080\r\n",
"6/23/2023,334.359985,2373.650080\r\n",
"6/26/2023,333.720001,2373.650080\r\n",
"6/27/2023,331.859985,2373.650080\r\n",
"6/28/2023,334.660004,2393.250213\r\n",
"6/29/2023,334.709991,2393.250213\r\n",
"6/30/2023,337.750000,2393.250213\r\n",
"7/3/2023,339.190002,2393.250213\r\n",
"7/5/2023,335.089996,2393.250213\r\n",
"7/6/2023,337.299988,2393.250213\r\n",
"7/7/2023,339.320007,2393.250213\r\n",
"7/10/2023,334.600006,2393.250213\r\n",
"7/11/2023,331.059998,2393.250213\r\n",
"7/12/2023,336.600006,2407.250213\r\n",
"7/13/2023,339.559998,2407.250213\r\n",
"7/14/2023,347.589996,2407.250213\r\n",
"7/17/2023,345.679993,2407.250213\r\n",
"7/18/2023,345.829987,2407.250213\r\n",
"7/19/2023,361.750000,2407.250213\r\n",
"7/20/2023,353.570007,2407.250213\r\n",
"7/21/2023,349.149994,2407.250213\r\n",
"7/24/2023,345.850006,2407.250213\r\n",
"7/25/2023,347.109985,2407.250213\r\n",
"7/26/2023,341.440002,2407.250213\r\n",
"7/27/2023,340.480011,2407.250213\r\n",
"7/28/2023,333.670013,2407.250213\r\n",
"7/31/2023,336.920013,2407.250213\r\n",
"8/1/2023,335.190002,2407.250213\r\n",
"8/2/2023,333.630005,2407.250213\r\n",
"8/3/2023,326.000000,2407.250213\r\n",
"8/4/2023,331.880005,2407.250213\r\n",
"8/7/2023,328.369995,2407.250213\r\n",
"8/8/2023,326.959991,2407.250213\r\n",
"8/9/2023,326.470001,2407.250213\r\n",
"8/10/2023,326.019989,2407.250213\r\n",
"8/11/2023,320.260010,2407.250213\r\n",
"8/14/2023,321.390015,2407.250213\r\n",
"8/15/2023,323.000000,2407.250213\r\n",
"8/16/2023,320.799988,2407.250213\r\n",
"8/17/2023,320.540009,2407.250213\r\n",
"8/18/2023,314.489990,2407.250213\r\n",
"8/21/2023,317.929993,2407.250213\r\n",
"8/22/2023,325.500000,2407.250213\r\n",
"8/23/2023,323.820007,2407.250213\r\n",
"8/24/2023,332.850006,2347.120241\r\n",
"8/25/2023,321.470001,2347.120241\r\n",
"8/28/2023,325.660004,2376.450262\r\n",
"8/29/2023,321.880005,2376.450262\r\n",
"8/30/2023,328.670013,2423.980318\r\n",
"8/31/2023,329.200012,2423.980318\r\n",
"9/1/2023,331.309998,2423.980318\r\n",
"9/5/2023,329.000000,2423.980318\r\n",
"9/6/2023,333.380005,2423.980318\r\n",
"9/7/2023,331.290009,2423.980318\r\n",
"9/8/2023,330.089996,2423.980318\r\n",
"9/11/2023,337.239990,2423.980318\r\n",
"9/12/2023,335.820007,2423.980318\r\n",
"9/13/2023,331.309998,2423.980318\r\n",
"9/14/2023,339.149994,2423.980318\r\n",
"9/15/2023,336.920013,2423.980318\r\n",
"9/18/2023,327.799988,2423.980318\r\n",
"9/19/2023,326.170013,2423.980318\r\n",
"9/20/2023,329.510010,2423.980318\r\n",
"9/21/2023,319.260010,2423.980318\r\n",
"9/22/2023,321.320007,2423.980318\r\n",
"9/25/2023,316.589996,2423.980318\r\n",
"9/26/2023,315.130005,2423.980318\r\n",
"9/27/2023,312.299988,2423.980318\r\n",
"9/28/2023,310.989990,2423.980318\r\n",
"9/29/2023,317.750000,2423.980318\r\n"
],
"text/html": [
"<table><thead><tr><td><span>Date</span></td><td><span>Price</span></td><td><span>Balance</span></td></tr></thead><tbody><tr><td><time datetime=\"2018-11-05\">Nov 05, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.370003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1000</pre></div></td></tr><tr><td><time datetime=\"2018-11-06\">Nov 06, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.379997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1000</pre></div></td></tr><tr><td><time datetime=\"2018-11-07\">Nov 07, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.440002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-08\">Nov 08, 2018</time></td><td><div class=\"dni-plaintext\"><pre>111.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-09\">Nov 09, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.849998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-12\">Nov 12, 2018</time></td><td><div class=\"dni-plaintext\"><pre>109.419998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-13\">Nov 13, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.550003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1033.750000</pre></div></td></tr><tr><td><time datetime=\"2018-11-14\">Nov 14, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.099998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-15\">Nov 15, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.989998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-16\">Nov 16, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.080002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1038.699955</pre></div></td></tr><tr><td><time datetime=\"2018-11-19\">Nov 19, 2018</time></td><td><div class=\"dni-plaintext\"><pre>108.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-20\">Nov 20, 2018</time></td><td><div class=\"dni-plaintext\"><pre>101.800003</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-21\">Nov 21, 2018</time></td><td><div class=\"dni-plaintext\"><pre>103.599998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-23\">Nov 23, 2018</time></td><td><div class=\"dni-plaintext\"><pre>102.169998</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-26\">Nov 26, 2018</time></td><td><div class=\"dni-plaintext\"><pre>104.790001</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-27\">Nov 27, 2018</time></td><td><div class=\"dni-plaintext\"><pre>106.269997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1068.219946</pre></div></td></tr><tr><td><time datetime=\"2018-11-28\">Nov 28, 2018</time></td><td><div class=\"dni-plaintext\"><pre>107.889999</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-11-29\">Nov 29, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.330002</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-11-30\">Nov 30, 2018</time></td><td><div class=\"dni-plaintext\"><pre>110.699997</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td><time datetime=\"2018-12-03\">Dec 03, 2018</time></td><td><div class=\"dni-plaintext\"><pre>113.000000</pre></div></td><td><div class=\"dni-plaintext\"><pre>1129.119906</pre></div></td></tr><tr><td colspan=\"3\"><i>(1213 more)</i></td></tr></tbody></table><style>\r\n",
".dni-code-hint {\r\n",
" font-style: italic;\r\n",
" overflow: hidden;\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview {\r\n",
" white-space: nowrap;\r\n",
"}\r\n",
".dni-treeview td {\r\n",
" vertical-align: top;\r\n",
" text-align: start;\r\n",
"}\r\n",
"details.dni-treeview {\r\n",
" padding-left: 1em;\r\n",
"}\r\n",
"table td {\r\n",
" text-align: start;\r\n",
"}\r\n",
"table tr { \r\n",
" vertical-align: top; \r\n",
" margin: 0em 0px;\r\n",
"}\r\n",
"table tr td pre \r\n",
"{ \r\n",
" vertical-align: top !important; \r\n",
" margin: 0em 0px !important;\r\n",
"} \r\n",
"table th {\r\n",
" text-align: start;\r\n",
"}\r\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"var filled =\n",
" from e in\n",
" merged.Prepend(new { Date = DateOnly.MinValue,\n",
" Price = 0m,\n",
" Balance = (decimal?)initialBalance })\n",
" .FillForward(e => e.Balance is null,\n",
" (e, f) => new { e.Date, e.Price, Balance = e.Balance ?? f.Balance })\n",
" .Skip(1) // skip the initial balance bootstrapping row\n",
" select new\n",
" {\n",
" e.Date,\n",
" e.Price,\n",
" Balance = (decimal)e.Balance, // never null anymore so safe to cast to a decimal!\n",
" };\n",
"\n",
"filled.Lead(2, (curr, peek) => (Current: curr, Peek: peek))\n",
" .SkipWhile(e => e is (_, { Balance: var b }) && b == initialBalance)\n",
" .Select(e => e.Current)\n",
" .ToTabularDataResource()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And that's it! Now we have two continuous and aligned time series of the price action and our strategy's performance so let's plot them together to see the evolution over time:"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {
"dotnet_interactive": {
"language": "csharp"
},
"polyglot_notebook": {
"kernelName": "csharp"
},
"vscode": {
"languageId": "polyglot-notebook"
}
},
"outputs": [
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\"></img>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"if (isWindows)\n",
"{\n",
" var plot = new Plot(1000, 400);\n",
" plot.XAxis.DateTimeFormat(true);\n",
" plot.YAxis.Label(\"Price\");\n",
" plot.YAxis2.Label(\"Balance\");\n",
" plot.YAxis2.Ticks(true);\n",
"\n",
" plot.AddScatter(data.Select(e => e.Date.ToOADate()).ToArray(),\n",
" data.Select(e => (double)e.Price).ToArray(),\n",
" markerShape: MarkerShape.none);\n",
"\n",
" plot.AddScatter(mavg.Select(e => e.Date.ToOADate()).ToArray(),\n",
" mavg.Select(e => (double)e.Avg).ToArray(),\n",
" markerShape: MarkerShape.none);\n",
"\n",
" plot.AddScatter(filled.Select(e => e.Date.ToOADate()).ToArray(),\n",
" filled.Select(e => (double)e.Balance).ToArray(),\n",
" markerShape: MarkerShape.none)\n",
" .YAxisIndex = 1;\n",
"\n",
" plot.Display();\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hope you enjoyed this tutorial and that it provided you with some valuable insights into the kind of operations and extensions that [MoreLINQ] has to offer. If you want to learn more, [Mark Heath] has an [awesome series of videos][mh-intro-series] and [blog entries][mh-blog-series] on some of the MoreLINQ operators discussed here and many more!\n",
"\n",
"Happy LINQ-ing!\n",
"\n",
"[MoreLINQ]: https://morelinq.github.io/\n",
"[Mark Heath]: https://markheath.net/\n",
"[mh-intro-series]: https://morelinq.github.io/#intro-series\n",
"[mh-blog-series]: https://markheath.net/category/MoreLINQ"
]
}
],
"metadata": {
"language_info": {
"name": "csharp"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@atifaziz
Copy link
Author

If you enjoyed this, give it (and MoreLINQ) a star! ⭐

@antonburger-alcove
Copy link

antonburger-alcove commented Dec 29, 2023

This was a great demo, thanks for taking the time to put it together! Especially for some of the more esoteric MoreLINQ operators (had never really considered Lead or FillForward, but seeing how they're used here makes me realise they fit some scenarios I've seen before), but also for things like ToTabularDataResource, and formatting and plotting in notebooks - really good stuff.

@atifaziz
Copy link
Author

This was a great demo, thanks for taking the time to put it together! Especially for some of the more esoteric MoreLINQ operators (had never really considered Lead or FillForward, but seeing how they're used here makes me realise they fit some scenarios I've seen before), but also for things like ToTabularDataResource, and formatting and plotting in notebooks - really good stuff.

@antonburger-alcove Thanks for taking the time to write the comment! Made my day to know it helped in the way it was intended.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment