The source files can be found in examples/.

Data preprocessing and the ingestion layer

Real price data is rarely clean. Assets list partway through the window (leading gaps), trade halts and stale quotes leave flat or missing stretches, names get delisted (trailing gaps), and exchanges keep different holiday calendars so timestamps do not line up. Feeding that straight into an optimiser is a recipe for silent errors.

The library answers it in one place. price_ingestion is the door: it unifies the two spellings an absent price arrives under, joins and collapses the series, and reads the Span Rule off the panel to state each asset's Listing Span — where a leading run of gaps is an asset not yet listed, a trailing run is a delisting, and an interior run is a suspension on an asset that is still listed. prices_to_returns then computes returns and carries every gap, handing the ReturnsResult an AssetPanel that says which assets are in the universe and which of them can be estimated at each observation.

Nothing on that path deletes an observation or an asset, and that is deliberate: an observation deleted for one asset's gap is an observation lost for every other asset too. Deleting is a separate, fitted step (MissingDataFilter), and so is filling (PriceGapFill) — a Universe Policy is fitted on a training window and replayed by name, or a walk-forward scores a fold against a universe the future chose.

When to reach for this

Reach for the layer whenever the raw price table has missing values — newly listed or delisted assets, halted or stale prices, or non-overlapping trading calendars. The decision for each gap is carry, fill, or drop: carrying is the default and needs no configuration, filling states a price convention across a suspension, and dropping is for an asset too sparse to trust.

using PortfolioOptimisers, PrettyTables, DataFrames, Statisticsresfmt = (v, i, j) -> begin    if j == 1        return v    else        return isa(v, Number) ? "$(round(v * 100, digits = 3)) %" : v    endend;

1. A clean slice, then realistic damage

We start from the usual S&P 500 slice and deliberately injure it to mimic the messes above: one asset that is mostly missing (a late lister), a halted block of one asset, and scattered single-day gaps across the rest.

using CSV, TimeSeriesX = TimeArray(CSV.File(joinpath(@__DIR__, "..", "SP500.csv.gz")); timestamp = :Date)[(end - 252):end]ts = timestamp(X)nx = string.(colnames(X))T, N = size(values(X))vals = Matrix{Union{Float64, Missing}}(values(X))vals[1:160, 3] .= missing                 # asset 3: a late lister, missing for 160 daysvals[100:120, 2] .= missing               # asset 2: a ~3-week trading haltusing StableRNGsrng = StableRNG(42)for _ in 1:60                              # scattered single-day gaps elsewhere    vals[rand(rng, 1:T), rand(rng, 4:N)] = missingendXmiss = TimeArray(ts, vals, Symbol.(nx))
253×20 TimeSeries.TimeArray{Union{Missing, Float64}, 2, Date, Matrix{Union{Missing, Float64}}} 2021-12-28 to 2022-12-28
┌────────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│             AAPL     AMD      BAC      BBY      CVX      GE       HD       JNJ      JPM      KO      LLY      MRK      MSFT     PEP      PFE      PG       RRC      UNH      WMT      XOM     │
├────────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ 2021-12-28 │ 177.738 │  153.15 │ missing │  92.981 │ 112.335 │  73.953 │  390.59 │ 163.569 │ 150.437 │ 56.324 │ 271.118 │  73.413 │ 336.502 │ 165.585 │  54.471 │  155.94 │  18.827 │ 492.795 │ 139.467 │  58.376 │
│ 2021-12-29 │ 177.827 │  148.26 │ missing │  94.233 │ 111.757 │  73.557 │ 395.032 │ 164.722 │ 150.361 │ 56.391 │  273.07 │  73.547 │ 337.192 │ 166.171 │  54.068 │ 157.232 │  18.788 │ 495.382 │ 139.398 │  57.865 │
│ 2021-12-30 │ 176.657 │  145.15 │ missing │  94.877 │ 111.264 │  73.487 │ 394.167 │ 165.451 │ 150.285 │ 56.228 │ 271.922 │  73.729 │ 334.599 │ 165.883 │  54.838 │ 155.872 │  18.057 │ 494.255 │ 139.848 │  57.525 │
│ 2021-12-31 │ 176.033 │   143.9 │ missing │  94.924 │ 111.188 │  73.309 │ 399.042 │ 164.261 │ 150.162 │ 56.639 │ 270.912 │  73.251 │  331.64 │ 166.882 │  55.448 │ 156.648 │  17.622 │ 492.011 │ 141.332 │  57.903 │
│ 2022-01-03 │ 180.434 │  150.24 │ missing │   95.41 │ 112.998 │  74.682 │ 392.917 │ 164.712 │ 153.338 │ 56.726 │ 266.509 │  73.471 │ 330.092 │ 166.181 │  53.194 │ 155.997 │  18.146 │ 492.148 │ 141.293 │  60.127 │
│ 2022-01-04 │ 178.144 │  144.42 │ missing │  98.231 │ 115.054 │  77.111 │ 396.955 │  164.27 │ 159.151 │ 57.673 │ 261.683 │  73.605 │ 324.432 │ 166.421 │  51.204 │ 156.543 │  18.432 │ 480.998 │ 138.705 │  62.389 │
│ 2022-01-05 │ 173.406 │  136.15 │ missing │  96.232 │ 115.803 │  77.111 │ 391.571 │ 165.365 │ 156.242 │ 58.151 │ 255.641 │  75.392 │ 311.978 │ 166.988 │  52.237 │ 157.251 │  18.076 │ 479.812 │  140.58 │  63.165 │
│ 2022-01-06 │ 170.511 │  136.23 │ missing │   96.12 │ 116.788 │  77.561 │ 390.148 │ 164.798 │ 157.902 │ 57.845 │ 254.347 │ missing │ 309.513 │ 167.026 │  51.495 │  155.93 │  18.501 │ 460.177 │  140.19 │   64.65 │
│ 2022-01-07 │ 170.679 │   132.0 │ missing │  95.765 │ 118.465 │  78.686 │ 378.465 │ 167.026 │ 159.466 │ 57.711 │ 254.514 │  76.749 │  309.67 │ 167.238 │  52.321 │ 155.844 │  18.491 │  449.35 │ 141.528 │   65.18 │
│ 2022-01-10 │ 170.699 │   132.0 │ missing │  95.999 │ 118.541 │   77.15 │ 372.552 │   166.2 │ 159.619 │ 57.807 │ 255.112 │  78.728 │ 309.897 │ 167.324 │ missing │ 153.718 │   19.45 │  455.62 │ 141.254 │  64.792 │
│ 2022-01-11 │ 173.564 │  137.31 │ missing │   97.25 │ 121.251 │  78.989 │ 371.792 │ 164.434 │ 159.781 │ 57.826 │ 257.279 │  78.059 │ 310.597 │ 167.247 │  53.232 │ 151.937 │  20.409 │  459.54 │ 140.854 │  67.518 │
│ 2022-01-12 │  174.01 │  137.47 │ missing │  95.933 │ 120.644 │  79.338 │ 374.417 │ 163.032 │ 160.687 │ 57.912 │ 251.002 │  77.609 │ 313.842 │ 167.065 │  53.194 │ 152.272 │  22.158 │ 464.164 │ 140.111 │  67.319 │
│ 2022-01-13 │ 170.699 │  132.74 │ missing │  95.858 │ 120.142 │  79.509 │  372.09 │ 162.043 │ 160.487 │ 58.256 │ 244.872 │  77.724 │ 300.559 │ 167.334 │  52.152 │ 151.582 │  21.081 │ 458.001 │ 142.094 │  66.836 │
│ 2022-01-14 │ 171.572 │  136.88 │ missing │ missing │ 122.189 │  80.052 │ 357.687 │ 161.159 │ 150.623 │ 58.725 │ 239.429 │  77.781 │ 305.884 │ 168.736 │  51.598 │ 153.038 │  21.535 │ 459.236 │ 141.694 │   68.01 │
│ 2022-01-18 │  168.33 │  131.93 │ missing │  92.159 │ 122.587 │  79.843 │  352.61 │ 160.449 │ 144.307 │ 58.256 │ 242.322 │  77.934 │ 298.439 │ 167.122 │  50.809 │ 150.088 │  20.251 │ 451.691 │ 139.213 │  69.155 │
│ 2022-01-19 │ 164.791 │  128.27 │ missing │  92.822 │ 122.141 │  78.081 │  345.85 │ 159.949 │ 142.075 │ 58.352 │ 240.341 │  77.695 │ 299.109 │ 168.323 │  50.274 │ 155.135 │  19.717 │  453.19 │   140.6 │  69.183 │
│ 2022-01-20 │ 163.086 │  121.89 │ missing │  88.664 │ 121.706 │  76.242 │ 336.129 │ 158.672 │ 140.864 │ 58.113 │ 238.458 │  77.179 │ 297.404 │ 167.103 │  50.753 │ 155.973 │  18.254 │ 453.661 │ 137.943 │  69.334 │
│ 2022-01-21 │ 161.004 │  118.81 │ missing │  90.112 │ 120.246 │  74.729 │ 335.668 │ 158.308 │ 138.402 │ 57.826 │ 238.389 │  76.443 │ 291.911 │ 167.372 │   49.57 │  156.57 │  17.414 │ 451.868 │ 136.937 │  68.294 │
│ 2022-01-24 │ 160.221 │  116.53 │ missing │  94.719 │ 120.502 │  75.202 │ 349.812 │ 156.483 │ 138.278 │ 57.357 │   235.8 │  75.344 │ 292.246 │ 166.517 │  48.396 │ 155.299 │  17.898 │ 452.945 │ 136.947 │   68.88 │
│ 2022-01-25 │ 158.397 │  111.13 │ missing │  91.589 │ 125.628 │  70.701 │ 345.168 │ 160.958 │ 139.786 │ 57.223 │ 234.859 │  75.946 │ 284.476 │ 164.605 │  49.335 │ 153.604 │  18.017 │ 447.625 │ 133.967 │  70.905 │
│ 2022-01-26 │ 158.308 │  110.71 │ missing │  90.552 │ 125.723 │  69.312 │ 343.533 │ 161.678 │ 141.112 │ 57.013 │ 233.289 │   75.64 │ 292.582 │ 162.866 │  49.776 │ 152.266 │  17.958 │ 449.183 │   132.6 │  70.186 │
│ 2022-01-27 │ 157.842 │   102.6 │ missing │  89.786 │ 128.262 │  69.762 │ 342.716 │   163.8 │ 138.622 │  57.06 │ 232.171 │  77.017 │ 295.668 │ 162.713 │  50.495 │  153.21 │  18.155 │ 452.289 │ 132.688 │  71.085 │
│ 2022-01-28 │ 168.855 │  105.24 │ missing │  91.224 │ 123.752 │   71.47 │ 352.437 │ 164.952 │ 139.862 │ 58.199 │  240.39 │  77.323 │ 303.971 │ 165.883 │  51.404 │ 154.529 │  19.203 │ 456.659 │ 134.329 │  71.237 │
│ 2022-01-31 │ 173.267 │  114.25 │ missing │  92.757 │ 124.434 │  73.316 │  352.86 │ 165.432 │  141.76 │ 58.361 │ 240.675 │  77.877 │ 306.653 │   166.7 │  49.852 │  154.48 │  19.025 │ 463.038 │ 136.566 │   71.88 │
│ 2022-02-01 │ 173.098 │  116.78 │ missing │   93.85 │ 127.713 │  76.009 │ 354.514 │ 164.078 │ 144.193 │ 57.931 │ 243.509 │  78.298 │ 304.464 │ 165.566 │  50.212 │ 153.797 │  20.142 │ 458.962 │  137.64 │  76.488 │
│ 2022-02-02 │ 174.318 │  122.76 │ missing │  92.542 │   128.3 │  76.079 │  359.35 │ 165.893 │ 143.039 │ 58.524 │  246.01 │  78.384 │ 309.098 │ 168.573 │  50.959 │  156.55 │  20.893 │ 470.102 │ 137.582 │   76.29 │
│ 2022-02-03 │ 171.403 │  120.08 │ missing │   90.72 │ 127.154 │  76.296 │ 350.773 │ 165.883 │ 141.856 │ 58.935 │ 240.106 │  75.516 │ 297.058 │ 168.477 │  50.505 │ 158.033 │  20.211 │ 478.911 │ 137.718 │    75.4 │
│ 2022-02-04 │ 171.115 │   123.6 │ missing │  90.468 │ 128.746 │  76.832 │ 345.831 │ 164.798 │ missing │ 58.313 │ 237.615 │  75.086 │ 301.683 │  165.71 │  50.145 │  155.52 │  20.142 │ 473.424 │ 136.097 │  77.037 │
│ 2022-02-07 │ 170.391 │  123.67 │ missing │  91.168 │ 131.275 │  77.522 │   343.6 │ 164.251 │ 146.025 │ 58.926 │  238.87 │  74.149 │ 296.763 │ 165.057 │  50.344 │ 154.355 │  19.727 │ 473.943 │ 134.759 │  77.965 │
│ 2022-02-08 │ 173.537 │  128.23 │ missing │  92.925 │ 129.276 │  77.064 │ 347.533 │ 164.683 │ 148.772 │ 59.308 │   235.3 │  73.509 │ 300.322 │ 165.259 │  48.915 │ 154.009 │  18.837 │ 483.457 │ 134.788 │  75.949 │
│ 2022-02-09 │ 174.977 │  132.85 │ missing │  95.503 │ 130.555 │  77.018 │  350.35 │ 164.664 │ 149.392 │  58.39 │ 238.595 │  73.146 │  306.88 │ 165.182 │  48.698 │ 153.662 │  19.015 │ 488.053 │ 134.495 │  75.585 │
│ 2022-02-10 │ 170.847 │  125.77 │ missing │  93.868 │ 128.897 │  76.661 │ 341.427 │ 162.676 │ 148.772 │ 58.715 │ 235.035 │  73.175 │ 298.173 │ 161.752 │  47.875 │ 151.322 │  20.102 │ 476.902 │ missing │  74.858 │
│ 2022-02-11 │ 167.393 │  113.18 │ missing │  93.962 │ 131.522 │   75.14 │ 336.812 │ 161.035 │ 146.836 │ 57.673 │  231.21 │  73.251 │ 290.935 │ 161.954 │  48.045 │ 150.475 │  20.745 │ 468.486 │  132.19 │  76.743 │
│ 2022-02-14 │ 167.631 │  114.27 │ missing │  94.027 │ 129.494 │  74.962 │ 338.033 │ 159.008 │ 145.471 │ 58.046 │ 231.141 │  73.089 │ 290.895 │ 160.148 │  47.118 │ 150.908 │  20.241 │ 464.831 │ 130.842 │  75.566 │
│ 2022-02-15 │ 171.512 │  121.47 │ missing │  95.475 │ 128.546 │  78.314 │ 339.668 │  160.65 │ 147.599 │ 58.266 │ 240.153 │  74.369 │ 296.289 │ 159.437 │  47.108 │ 150.985 │  20.013 │ 468.584 │ 131.252 │  74.619 │
│ 2022-02-16 │ 171.274 │  117.69 │ missing │  93.084 │ 128.584 │  78.694 │  336.62 │ 160.554 │ 147.866 │ 58.256 │ 241.866 │  73.805 │ 295.943 │ 159.763 │  47.004 │ 152.131 │  19.944 │ missing │ 130.431 │  74.964 │
│ 2022-02-17 │ 167.631 │  112.37 │ missing │  92.149 │ 127.924 │  76.405 │ 334.553 │ 159.575 │  144.46 │ 59.423 │ 237.326 │  72.983 │ 287.278 │ 160.196 │  46.266 │ 153.874 │  20.181 │ 460.853 │ 135.657 │  74.849 │
│ 2022-02-18 │ 166.063 │  113.83 │ missing │   91.29 │ 127.742 │  71.927 │ 333.524 │ 157.865 │ 145.137 │ 59.825 │ 236.676 │  72.993 │ 284.511 │ 161.118 │  45.916 │ 153.951 │  20.191 │ missing │ 134.788 │  74.016 │
│ 2022-02-22 │ 163.105 │  115.65 │ missing │    84.6 │ 126.765 │   73.06 │ 304.005 │ 155.719 │  144.88 │ 59.576 │ 235.514 │  72.592 │ 284.303 │ 161.733 │ missing │ 152.054 │  19.747 │ 453.181 │ 133.284 │  73.155 │
│ 2022-02-23 │ 158.886 │  109.76 │ missing │  82.806 │ 129.781 │  71.896 │ 296.582 │ 155.797 │ 141.846 │ 58.916 │ 234.706 │  72.486 │ 276.942 │ 160.138 │  44.346 │ 150.157 │  22.385 │ 450.349 │ 131.916 │  73.452 │
│ 2022-02-24 │ 161.537 │  116.61 │ missing │  85.562 │ 129.111 │  71.811 │ 301.188 │  152.82 │ 137.897 │ 57.883 │ 239.404 │  70.259 │ 291.092 │ 157.352 │  43.485 │ 146.114 │  23.591 │ 446.694 │ 131.408 │  72.524 │
│ 2022-02-25 │ 163.631 │  121.06 │ missing │  89.533 │ 134.406 │  74.783 │ 304.466 │ 160.416 │ 141.159 │ 60.121 │ 247.057 │  72.945 │ 293.779 │ 161.762 │   45.15 │ 152.353 │  23.137 │ 466.154 │ 133.215 │  74.476 │
│ 2022-02-28 │ 163.899 │  123.34 │ missing │   90.29 │ 137.872 │  74.116 │ 303.678 │ 159.034 │ 135.273 │ 59.538 │  246.17 │  73.194 │ 295.242 │ 157.304 │  44.412 │  150.09 │  22.682 │ 466.271 │ 132.024 │  75.031 │
│ 2022-03-01 │ 161.993 │  113.83 │ missing │  90.795 │ 143.348 │  71.648 │ 307.928 │ 158.483 │  130.17 │  59.28 │ 245.727 │  72.964 │ 291.447 │ 155.892 │  43.286 │ 147.606 │  23.492 │ 466.643 │ 132.834 │  75.748 │
│ 2022-03-02 │ 165.328 │  118.28 │ missing │  94.214 │  147.58 │  73.068 │ 314.774 │ 160.454 │ 132.869 │  59.72 │ 250.327 │   73.28 │ 296.625 │ 158.053 │  45.131 │ 148.068 │  24.896 │ 475.589 │   133.0 │  77.049 │
│ 2022-03-03 │ 165.001 │  111.98 │ missing │ 102.903 │ 149.572 │  71.741 │  311.88 │ 162.812 │ 131.925 │ 59.758 │ 254.729 │  73.738 │ 292.406 │ 157.884 │  45.254 │ 148.617 │  24.599 │ 476.775 │ 136.058 │  77.537 │
│ 2022-03-04 │ 161.963 │  108.41 │ missing │  99.128 │ 151.898 │  69.173 │ 311.784 │ 163.779 │ 128.214 │ 59.854 │ 258.895 │  74.388 │ 286.418 │ 160.282 │   46.03 │ 149.368 │  26.171 │ 488.592 │ 139.506 │  80.455 │
│ 2022-03-07 │ 158.122 │  102.95 │ missing │   97.83 │ 155.144 │  66.314 │ 310.351 │ 166.417 │ 123.263 │ 58.428 │ 257.684 │  74.293 │ 275.598 │ 157.091 │  45.396 │ 147.154 │  26.418 │ 477.049 │ 138.383 │  83.354 │
│ 2022-03-08 │ 156.276 │  105.53 │ missing │ missing │ 163.273 │  68.466 │ 304.553 │ 163.044 │ 122.395 │ 56.113 │ 255.999 │  73.547 │ 272.574 │ 152.662 │  44.885 │ 141.329 │  25.835 │  463.91 │  135.52 │  83.986 │
│ 2022-03-09 │ 161.745 │  111.05 │ missing │  95.055 │ 159.194 │  70.874 │ 306.836 │ 163.663 │ 127.298 │   56.4 │ 258.816 │   74.35 │ 285.074 │ 152.208 │  46.124 │ 143.235 │  26.368 │ 475.775 │ 136.224 │  79.212 │
│ 2022-03-10 │ 157.348 │  106.46 │ missing │  92.177 │  163.55 │  70.936 │ 307.552 │ missing │ 125.791 │ 55.367 │ 261.997 │  74.446 │ 282.199 │ 149.413 │   46.55 │ 139.547 │  27.801 │ 481.527 │  139.32 │  81.671 │
│ 2022-03-11 │ 153.586 │  104.29 │ missing │  88.375 │ 163.627 │  71.674 │ 306.439 │ 163.653 │ 122.958 │ 55.405 │ 262.273 │  74.799 │ 276.744 │ 148.659 │  47.562 │ 137.891 │  27.208 │  474.53 │ 138.773 │   81.25 │
│ 2022-03-14 │ 149.506 │  102.25 │ missing │  88.421 │ 159.625 │  71.806 │ 307.958 │ 165.914 │ 124.179 │ 56.427 │ 264.932 │  75.002 │ 273.157 │ 150.748 │  49.436 │ missing │  25.261 │ 479.493 │ 140.707 │  78.341 │
│ 2022-03-15 │ 153.943 │  109.33 │ missing │  92.551 │ 151.544 │  71.728 │ 317.805 │ 170.215 │ 126.382 │ 57.468 │ 271.295 │  75.831 │  283.74 │ missing │  49.398 │ 144.679 │  25.192 │  489.31 │ 142.397 │  73.882 │
│ 2022-03-16 │  158.41 │  115.37 │ missing │  92.345 │ 150.998 │  73.553 │ 320.098 │ 168.649 │  132.03 │ 57.314 │  272.26 │   75.33 │ 290.894 │ 154.432 │   50.07 │ 144.188 │  25.202 │ 489.654 │ 141.977 │  73.605 │
│ 2022-03-17 │ 159.432 │  111.69 │ missing │  92.766 │ 153.612 │  74.198 │  325.37 │ 170.852 │ 133.699 │ 57.921 │ 281.193 │   76.12 │ 291.714 │ 155.631 │  51.319 │ 144.641 │  26.606 │ 498.263 │ 142.193 │  75.566 │
│ 2022-03-18 │ 162.767 │  113.46 │ missing │  95.148 │ 154.847 │  74.244 │ 329.607 │ 168.958 │ 133.652 │ 57.931 │  283.29 │  76.284 │ 296.862 │  157.42 │  51.574 │ 144.564 │   26.24 │ 497.378 │ 142.614 │   75.27 │
│ 2022-03-21 │ 164.157 │  115.92 │ missing │  92.532 │ 157.633 │  73.646 │ 318.608 │ 169.915 │ 133.222 │ 58.394 │  285.26 │  76.236 │ 295.607 │ 157.198 │  51.271 │ 145.112 │  26.566 │ 498.892 │ 141.428 │  78.647 │
│ 2022-03-22 │ 167.572 │  114.78 │ missing │  92.775 │ 157.107 │  73.708 │ 318.956 │ 169.113 │ 136.056 │ 58.606 │  280.71 │  76.468 │ 300.449 │ 158.919 │  50.183 │ 146.229 │  26.447 │ 496.592 │ 141.006 │  78.303 │
│ 2022-03-23 │ 168.951 │  113.92 │ missing │   91.05 │ 158.801 │  72.776 │ 306.691 │ 168.475 │ 133.346 │  58.22 │ 279.893 │  76.882 │ 295.934 │ 158.087 │  49.379 │ 145.209 │  28.068 │ 494.538 │ 139.192 │  79.537 │
│ 2022-03-24 │ 172.783 │  120.53 │ missing │  91.163 │ 159.223 │  73.103 │ 305.462 │ 169.345 │ 134.214 │ 58.779 │  283.34 │  77.538 │ 300.489 │ 159.045 │  49.757 │ 145.459 │   28.76 │ 504.592 │ 140.055 │  79.776 │
│ 2022-03-25 │ 173.428 │  119.67 │ missing │  90.777 │ 162.105 │  73.025 │ 300.529 │ 170.968 │ 135.388 │ 59.309 │  284.65 │  78.435 │ 300.074 │ 159.789 │  49.937 │ 147.144 │  31.142 │ 504.169 │ 140.663 │  81.517 │
│ 2022-03-28 │ 174.302 │  120.24 │ missing │  91.182 │  159.27 │  71.456 │ 304.011 │ 171.848 │ 134.386 │ 59.685 │  287.25 │  78.309 │  307.01 │ 160.263 │   50.41 │ 148.155 │  30.836 │ 504.336 │ 143.164 │  79.231 │
│ 2022-03-29 │ 177.637 │  123.23 │ missing │  94.972 │ 157.327 │  73.514 │ 307.329 │ 171.761 │ 134.682 │ 59.917 │ 284.029 │  78.656 │ 311.664 │ 162.642 │  49.899 │ 149.676 │  30.549 │ 501.909 │  144.37 │   78.81 │
│ 2022-03-30 │ 176.456 │  119.22 │ missing │  90.899 │ 158.438 │   73.46 │ 298.381 │ 173.549 │ 134.071 │ 59.965 │ 285.506 │  79.457 │ 310.133 │ 162.419 │  49.615 │ 148.646 │  30.331 │ 511.825 │ 146.958 │  80.159 │
│ 2022-03-31 │ 173.319 │  109.34 │ missing │  85.687 │   155.9 │  71.068 │  289.55 │ 171.268 │ 130.046 │ 59.762 │  282.04 │  79.119 │ 304.649 │ 161.859 │  48.982 │ 147.115 │  30.025 │ 501.162 │ 146.027 │   79.02 │
│ 2022-04-01 │ 173.021 │  108.19 │ missing │  85.196 │ 157.231 │  71.837 │ 292.026 │ 172.196 │ 129.082 │ 60.601 │ 288.244 │  80.537 │ 305.746 │  164.16 │  48.792 │  149.32 │  31.181 │ 503.737 │ 148.076 │  79.527 │
│ 2022-04-04 │ 177.121 │  110.53 │ missing │  88.929 │ 157.375 │  71.472 │ 295.596 │ 170.534 │ 129.654 │ 60.283 │ 287.013 │  80.508 │  311.23 │ 163.735 │  48.196 │ 148.347 │  30.766 │ 501.211 │ 148.106 │  79.566 │
│ 2022-04-05 │ 173.766 │  106.82 │ missing │ missing │ 156.408 │   69.98 │ 294.899 │ 171.635 │ 128.146 │ 60.215 │ 288.067 │   80.73 │ 307.188 │ 163.909 │   48.48 │ 148.867 │  30.737 │ 508.817 │ 148.527 │  79.154 │
│ 2022-04-06 │ 170.559 │  103.67 │ missing │  85.837 │ 157.796 │  69.833 │ 288.786 │   176.1 │ 126.368 │ 60.823 │ 301.215 │  81.935 │ 295.943 │ 166.703 │  50.022 │ 150.995 │  31.152 │ 522.566 │ 151.979 │  80.034 │
│ 2022-04-07 │ 170.867 │  103.72 │ missing │  86.789 │ 159.989 │  69.483 │ 292.858 │ 175.646 │ 125.983 │  61.15 │ 303.766 │    83.7 │ 297.791 │ 166.858 │  52.189 │  152.95 │  31.004 │ 527.676 │ 153.499 │  81.374 │
│ 2022-04-08 │ 168.832 │   101.0 │ missing │  88.005 │ 162.698 │  69.701 │ 300.945 │ missing │  128.29 │ 61.526 │ 306.977 │  84.548 │ 293.443 │ 167.419 │  52.198 │ missing │  32.219 │  536.53 │ 154.352 │  83.087 │
│ 2022-04-11 │ 164.524 │   97.37 │ missing │   88.76 │ 158.514 │  69.646 │ 296.698 │  173.79 │ 127.819 │ 61.507 │ 304.288 │  83.536 │ 281.873 │ 166.906 │  51.025 │ 153.556 │  31.557 │ 528.157 │ 151.293 │  80.226 │
│ 2022-04-12 │  166.42 │    95.1 │ missing │  87.883 │ 161.817 │  69.903 │ 296.282 │ 173.848 │ 126.416 │  62.23 │ 303.421 │  82.571 │ 278.711 │ 167.583 │  50.249 │ 153.094 │  31.379 │ 524.492 │ 150.253 │    81.9 │
│ 2022-04-13 │  169.14 │   97.74 │ missing │  89.768 │ 164.364 │  70.485 │ 300.277 │ 174.583 │ 122.341 │ 62.394 │ 298.093 │  83.054 │ 284.204 │ 167.293 │   50.24 │ 153.527 │  32.298 │ 527.725 │ missing │  83.058 │
│ 2022-04-14 │ 164.068 │   93.06 │ missing │  88.458 │ 164.287 │  70.547 │  294.57 │ 173.848 │ 121.207 │ 62.673 │ 297.295 │  83.806 │ 276.507 │ 166.229 │  50.259 │  152.67 │  32.012 │ 525.583 │ 154.028 │  84.034 │
│ 2022-04-18 │ 163.849 │   93.89 │ missing │  88.119 │  166.49 │  70.213 │ 290.401 │ 171.683 │ 123.456 │ 62.114 │ 294.301 │  82.996 │ 277.189 │ 164.798 │  49.048 │ 151.217 │  33.563 │ 524.856 │ 152.852 │  84.723 │
│ 2022-04-19 │ 166.162 │   96.93 │ missing │  90.089 │ 164.517 │  71.378 │ 297.743 │ 176.921 │ 126.012 │ 62.722 │ 292.519 │  82.726 │ 281.912 │ 167.196 │  47.477 │ 153.479 │  32.259 │ 528.413 │ 154.587 │  83.967 │
│ 2022-04-20 │ 165.993 │   94.02 │ missing │  88.986 │ 165.187 │   70.99 │ 304.843 │ 177.704 │ 126.454 │ 63.579 │ 288.491 │  83.372 │ 282.959 │ 169.682 │   47.07 │ 157.561 │  32.585 │ 536.579 │ 156.529 │  84.158 │
│ 2022-04-21 │ 165.189 │   89.85 │ missing │  88.269 │ 157.576 │  71.239 │ 300.219 │ 177.192 │ 125.474 │  63.82 │ 285.231 │   83.15 │ 277.475 │ 169.072 │  46.465 │ 157.438 │   31.29 │ 528.157 │ 156.764 │  83.268 │
│ 2022-04-22 │ 160.594 │   88.14 │ missing │  86.045 │   154.1 │   69.18 │ 290.304 │ 175.433 │ missing │ 62.895 │ 274.515 │  81.569 │ 270.776 │ 166.471 │  45.538 │ 156.122 │  29.995 │ 511.943 │ 153.813 │  81.451 │
│ 2022-04-25 │ 161.676 │   90.69 │ missing │  87.732 │ 150.788 │  69.809 │ 294.976 │ 179.753 │ 121.832 │  63.56 │ 280.887 │  82.388 │ 277.386 │ 168.009 │  46.313 │  157.38 │  29.916 │ 515.215 │ 153.891 │  78.705 │
│ 2022-04-26 │ 155.641 │   85.16 │ missing │  87.506 │ 149.868 │  62.594 │ 290.159 │ 178.467 │ 118.228 │ 62.702 │ 278.553 │  81.463 │ 267.011 │ 167.583 │  46.389 │ 154.708 │  29.155 │ 504.906 │ 152.283 │  78.733 │
│ 2022-04-27 │ 155.412 │   84.91 │ missing │  87.694 │ 149.591 │  60.745 │ 291.746 │ 175.974 │  116.69 │ 63.194 │ 280.779 │  81.395 │ 279.857 │ 169.082 │  47.061 │ missing │   30.47 │ 504.936 │ 151.244 │  80.982 │
│ 2022-04-28 │  162.43 │   89.64 │ missing │  88.213 │ 154.905 │  60.373 │ 301.574 │ 177.288 │ 118.535 │ 63.801 │ 292.775 │  85.416 │ 286.191 │ 171.645 │  47.789 │ 158.213 │  30.628 │ 515.362 │ 153.175 │  83.431 │
│ 2022-04-29 │ 156.484 │   85.52 │ missing │  84.772 │ 150.002 │  57.903 │ 290.585 │ 174.389 │  114.71 │ 62.278 │ 287.713 │  85.522 │ 274.224 │ 166.046 │  46.427 │ 155.444 │   29.59 │ 499.766 │ 150.018 │  81.565 │
│ 2022-05-02 │ 156.792 │   89.84 │ missing │   88.43 │ 152.951 │  58.679 │  296.94 │  172.63 │ missing │  61.15 │ 285.181 │  84.519 │ 281.092 │ 162.226 │  45.736 │ 153.343 │  29.501 │ 492.494 │ 149.027 │  82.675 │
│ 2022-05-03 │ 158.301 │   91.13 │ missing │  89.221 │ 155.575 │  60.318 │ 294.996 │ 172.292 │ 118.237 │ 60.803 │ 283.714 │  83.989 │ 278.434 │ 162.448 │  46.635 │ 151.242 │  30.658 │ 490.991 │ 149.547 │  84.378 │
│ 2022-05-04 │ 164.792 │   99.42 │ missing │  92.181 │ 160.458 │   62.47 │ 305.008 │ 174.138 │ 122.149 │ 62.683 │ 290.441 │  85.358 │ 286.536 │ 168.125 │  46.985 │ 152.355 │  31.666 │ 498.853 │ 151.616 │  87.737 │
│ 2022-05-05 │ 155.611 │   93.87 │ missing │  86.921 │ 159.184 │  61.041 │ 289.337 │ 170.814 │ 119.093 │ 62.182 │ 287.949 │  84.866 │ 274.056 │ 164.769 │   45.84 │ 149.548 │  30.341 │ 486.175 │ 150.317 │  86.407 │
│ 2022-05-06 │ 156.346 │   95.34 │ missing │  86.167 │ 163.426 │  60.761 │ 284.694 │ 170.437 │   118.9 │ 62.403 │  292.41 │  85.233 │ 271.468 │ 164.789 │  46.399 │ 151.039 │  30.183 │ 490.991 │ 147.188 │  87.727 │
│ 2022-05-09 │ 151.157 │   86.36 │ missing │  85.856 │ 152.473 │  56.676 │ 287.325 │ 171.365 │ missing │ 62.278 │ 284.856 │   84.51 │ 261.438 │ 166.036 │   46.02 │ 150.661 │  26.388 │ 478.019 │  148.91 │  80.809 │
│ 2022-05-10 │ 153.593 │   88.73 │ missing │   83.65 │ 153.938 │   56.94 │ 281.647 │ 171.133 │ missing │   61.7 │  281.38 │  84.674 │   266.3 │ 165.833 │  46.824 │ 149.867 │  26.358 │ 479.581 │ 146.814 │  81.345 │
│ 2022-05-11 │  145.63 │   87.92 │ missing │  78.984 │ 156.216 │  56.264 │ 273.715 │ 170.205 │ 113.538 │ 61.989 │ 282.355 │  86.004 │ 257.456 │  165.03 │  46.787 │ 147.756 │  27.199 │ 477.753 │ 145.278 │  83.039 │
│ 2022-05-12 │ 141.714 │   87.06 │ missing │   82.35 │   157.7 │  56.916 │ 280.225 │ 171.886 │ 113.442 │ 62.182 │ 287.388 │  87.586 │ 252.318 │ 164.779 │  48.065 │ 147.156 │  26.754 │  470.53 │ 145.141 │  83.416 │
│ 2022-05-13 │ 146.237 │   95.12 │ missing │  81.407 │ 160.726 │  58.291 │ 286.358 │ 170.901 │ 114.451 │ 63.348 │ 288.188 │  87.181 │ 258.019 │ 167.989 │  47.616 │ 148.734 │  26.764 │ 477.016 │ 145.701 │   85.89 │
│ 2022-05-16 │ 144.676 │   94.24 │ missing │  79.908 │ 165.647 │  57.965 │ 286.319 │ 172.089 │ 113.653 │ 63.579 │ 295.847 │  89.023 │ 258.395 │ missing │  48.332 │ 150.187 │  27.287 │  480.77 │ 145.859 │   87.91 │
│ 2022-05-17 │ 148.354 │  102.47 │ missing │  79.654 │ 166.624 │   59.34 │ 291.117 │ 172.804 │  117.42 │ 63.406 │ 297.843 │  89.678 │ 263.651 │ 168.705 │  48.971 │ 149.761 │   28.73 │ 484.023 │ 129.266 │  89.032 │
│ 2022-05-18 │ 139.984 │   96.28 │ missing │  71.283 │ 162.231 │  58.408 │ 275.862 │ 169.596 │ 115.412 │ 58.991 │ 291.706 │   88.81 │ 251.648 │ 158.252 │  48.074 │ 140.427 │  27.455 │ 463.238 │ 120.488 │   87.62 │
│ 2022-05-19 │ 136.535 │ missing │ missing │  69.115 │ 161.073 │  58.827 │ 278.358 │ 168.089 │ 113.701 │ 57.835 │ 282.891 │  88.801 │ 250.717 │ 155.882 │  48.313 │ 137.193 │  27.791 │ 470.285 │ 117.181 │  88.094 │
│ 2022-05-20 │ 136.773 │ missing │ missing │   68.21 │   162.0 │  58.446 │ 277.806 │ 171.026 │ 112.769 │ 58.779 │ 295.323 │  90.209 │ 250.142 │ 156.859 │  50.049 │ 137.281 │  27.851 │ 477.341 │ 117.309 │   88.79 │
│ 2022-05-23 │ 142.261 │ missing │ missing │  68.427 │ 165.764 │  58.609 │ 276.684 │ 174.518 │ 119.746 │ 60.591 │ 299.029 │  90.479 │ 258.155 │ 160.137 │   50.44 │ 140.437 │  28.898 │ 483.581 │ 120.655 │  90.752 │
│ 2022-05-24 │ 139.527 │ missing │ missing │  69.256 │ 166.653 │  57.879 │ 278.513 │ 176.424 │ 121.438 │ 61.709 │ 302.349 │   91.26 │ 257.134 │ 162.284 │  50.945 │ 142.935 │  28.651 │ 488.966 │ 122.161 │  91.245 │
│ 2022-05-25 │ 139.686 │ missing │ missing │  75.468 │ 169.327 │  57.887 │ 283.978 │ 174.693 │ 122.283 │ 61.758 │ 303.386 │  90.401 │ 260.007 │ 163.396 │  51.231 │ 140.592 │  32.348 │ 489.487 │ 121.413 │  93.082 │
│ 2022-05-26 │ 142.927 │ missing │ missing │  77.344 │ 170.466 │  59.813 │ 292.916 │ 174.537 │ 124.398 │ 61.979 │  309.76 │  89.013 │ 263.354 │ 164.498 │  51.499 │ 141.821 │  34.305 │ 493.556 │ 124.001 │   93.41 │
│ 2022-05-27 │ 148.752 │ missing │ missing │  79.173 │ 172.097 │  61.173 │ 298.381 │ 176.123 │ 126.156 │ 62.346 │ 319.662 │  89.755 │ 270.624 │ 166.104 │  51.422 │  143.99 │  35.747 │ 498.351 │ 126.442 │  94.328 │
│ 2022-05-31 │ 147.957 │ missing │ missing │  77.354 │ 168.603 │  60.808 │ 292.858 │ 174.605 │ 127.079 │ 61.093 │ 309.741 │  88.743 │ 269.267 │ 162.216 │  50.592 │ 143.177 │  33.553 │   488.2 │  126.59 │  92.792 │
│ 2022-06-01 │ 147.827 │ missing │ missing │  75.487 │ 170.205 │  60.209 │ 289.295 │ 172.835 │ 124.849 │ 60.794 │ 307.408 │  87.885 │ 269.812 │ 160.998 │  49.953 │ 141.008 │  34.828 │ 484.043 │  123.46 │ missing │
│ 2022-06-02 │ 150.312 │ missing │ missing │  76.599 │ 169.896 │  60.582 │ 297.745 │ 172.291 │ 126.858 │  61.43 │ 298.861 │  86.785 │ 271.951 │ 162.303 │  50.249 │ 142.528 │  34.591 │ 483.758 │ 125.487 │  94.406 │
│ 2022-06-03 │ 144.517 │ missing │ missing │  75.779 │ 171.441 │  59.782 │ 296.976 │ 171.581 │ 125.089 │ 60.697 │  298.09 │  86.699 │ 267.435 │ 160.521 │  50.745 │  141.25 │  34.453 │ 477.223 │ 123.332 │  95.778 │
│ 2022-06-06 │ 145.273 │ missing │ missing │  74.724 │ 170.697 │  59.806 │ 295.817 │ 171.561 │ 124.676 │ 60.601 │  299.78 │  86.631 │ 266.177 │ 161.193 │  50.802 │ 140.698 │  35.293 │ 481.714 │ 122.889 │  95.537 │
│ 2022-06-07 │ 147.827 │ missing │ missing │  73.856 │  173.95 │  60.582 │ 293.754 │ 173.448 │ 125.003 │ 60.967 │ 308.416 │  87.248 │ 269.891 │ 162.186 │   51.47 │ 142.267 │  36.588 │ 488.514 │ 121.413 │  99.915 │
│ 2022-06-08 │ 147.082 │ missing │ missing │  72.697 │ 174.848 │   59.93 │ 289.626 │ 172.417 │ 123.014 │  60.62 │  309.79 │  86.284 │ 267.821 │ 161.378 │  51.003 │ 140.495 │  35.579 │ 485.006 │  120.36 │ 101.094 │
│ 2022-06-09 │ 141.793 │ missing │ missing │  70.632 │ 171.363 │  58.081 │ 291.894 │ 168.945 │ 120.428 │  59.57 │ 299.671 │  84.857 │ 262.255 │ 158.505 │  49.391 │ 137.958 │  34.927 │ 480.977 │   119.1 │   98.91 │
│ 2022-06-10 │ 136.316 │ missing │ missing │  68.436 │ 169.317 │  55.324 │ 281.556 │ 167.817 │ 114.893 │ 59.194 │ 293.505 │  84.066 │ 250.568 │ 158.252 │  47.664 │ 137.435 │  34.038 │  476.26 │ 119.769 │  97.102 │
│ 2022-06-13 │ 131.097 │ missing │ missing │   66.27 │ 161.527 │  52.598 │ 275.638 │ 166.125 │ 111.472 │ 59.126 │ missing │  81.964 │ 239.941 │ 155.545 │  45.699 │ 133.756 │  32.021 │ 461.587 │ 117.516 │  92.647 │
│ 2022-06-14 │ 131.972 │ missing │ missing │  67.358 │ 161.739 │  52.854 │ 271.267 │ 163.576 │ 109.617 │ 57.505 │ 287.358 │  82.149 │ 242.149 │  152.02 │  45.709 │ 129.583 │   29.62 │ 453.775 │ 117.565 │  92.888 │
│ 2022-06-15 │ 134.626 │ missing │ missing │  68.474 │ 158.563 │   53.67 │ 272.299 │ 165.327 │ 110.914 │ 57.932 │ 289.532 │  82.275 │  249.35 │ 153.646 │  46.271 │ 128.296 │  30.331 │  456.31 │ 117.486 │  91.719 │
│ 2022-06-16 │ 129.288 │ missing │ missing │  65.344 │ 150.088 │   50.71 │ 266.196 │ 165.415 │ 109.011 │ 57.349 │  284.67 │  82.528 │ 242.625 │ 152.906 │  45.289 │  129.08 │  28.839 │ 449.811 │ 118.707 │  88.336 │
│ 2022-06-17 │ 130.779 │ missing │ missing │  67.282 │ 143.234 │  51.262 │ 263.538 │ 164.812 │ 108.627 │ 57.699 │ missing │  82.265 │ 245.279 │ 152.935 │  44.383 │  128.15 │  25.983 │ 445.836 │ 116.414 │  83.242 │
│ 2022-06-21 │ 135.063 │   83.79 │ missing │  67.243 │ 149.229 │  51.068 │ 262.049 │ 168.264 │ missing │ 58.932 │ 293.831 │   85.58 │ 251.311 │  156.49 │   45.89 │ 132.033 │  26.606 │ 473.707 │ 120.232 │  88.423 │
│ 2022-06-22 │ 134.547 │   83.75 │ missing │   66.68 │ 142.742 │  50.128 │ 261.835 │ 170.919 │ 110.693 │ 59.369 │  303.07 │  86.679 │ 250.707 │ 157.775 │  46.806 │ 134.095 │  25.904 │ 482.939 │ 118.775 │  84.924 │
│ 2022-06-23 │ 137.449 │   82.43 │ missing │  68.026 │  137.49 │  49.763 │ 268.104 │ 174.732 │ 109.482 │ 60.078 │ 309.029 │   89.44 │ 256.382 │  159.79 │  47.779 │ 137.774 │  24.056 │ 492.929 │ 121.659 │  82.362 │
│ 2022-06-24 │ 140.819 │   87.08 │ missing │   71.27 │ 139.749 │  52.101 │ 275.482 │  177.29 │ missing │ 61.204 │ 321.777 │  90.539 │ 265.137 │ 161.767 │  49.209 │ 139.759 │  25.983 │ 488.817 │ 121.757 │  83.996 │
│ 2022-06-27 │ 140.819 │   86.16 │ missing │  68.837 │ 142.452 │  51.875 │  275.18 │ 177.124 │ 111.846 │ 61.078 │ 323.407 │  91.783 │ 262.354 │ 161.981 │  49.486 │ 138.694 │  26.793 │ 498.699 │ 122.151 │  86.054 │
│ 2022-06-28 │ 136.624 │   80.78 │ missing │  65.698 │  144.74 │   51.23 │ 262.974 │ 172.086 │ 111.308 │ 60.466 │ 313.871 │  89.333 │ 254.025 │ 159.703 │  48.322 │ 136.438 │  27.327 │  501.44 │ 120.429 │  88.442 │
│ 2022-06-29 │ 138.404 │   77.99 │ missing │  64.075 │ 141.883 │  49.527 │ 266.595 │ 172.135 │ 110.808 │ 60.903 │ 319.188 │  89.936 │ 257.768 │ 162.351 │  48.589 │ 137.678 │  26.378 │  508.61 │ 119.986 │  85.175 │
│ 2022-06-30 │ 135.908 │   76.47 │ missing │ missing │ 139.759 │  49.511 │ 266.984 │ 172.641 │ 108.223 │ 61.078 │ 320.403 │  88.633 │ 254.371 │ 162.283 │  50.011 │ 139.217 │  24.461 │ 506.559 │ 119.651 │  82.778 │
│ 2022-07-01 │ 138.105 │   73.67 │ missing │  63.713 │ 141.429 │   49.41 │ 271.666 │ 174.596 │ 109.607 │ 62.505 │ 320.878 │  89.848 │ 257.095 │ 164.942 │  49.896 │ 141.463 │  25.084 │ 510.277 │ 120.685 │  84.624 │
│ 2022-07-05 │  140.72 │    75.2 │ missing │  66.776 │ 137.712 │  48.236 │ 276.193 │ 173.254 │  109.19 │ 61.437 │ 323.318 │  90.062 │ 260.334 │ 164.572 │  49.257 │ 140.098 │  23.898 │ 498.284 │ 122.279 │  81.976 │
│ 2022-07-06 │ 142.072 │   75.35 │ missing │  65.383 │ 135.898 │  47.878 │ 276.047 │ 173.409 │ 108.482 │ 61.563 │ 326.253 │  90.539 │ 263.661 │ 166.217 │  50.316 │ 141.405 │  23.749 │ 508.196 │ 123.145 │  80.497 │
│ 2022-07-07 │ 145.481 │    79.3 │ missing │  67.644 │ 138.543 │   48.99 │ 279.074 │ 173.604 │ 111.226 │ 61.078 │ 324.079 │  90.422 │  265.83 │ 165.886 │  50.955 │ 141.357 │  25.904 │ 507.298 │ 123.332 │  83.068 │
│ 2022-07-08 │ 146.167 │   79.35 │ missing │  67.911 │ 137.819 │  49.185 │  278.86 │  173.39 │ 110.877 │ 61.301 │  326.57 │  90.198 │ 265.098 │ 167.366 │  50.716 │ 140.408 │  25.321 │  511.49 │ 123.411 │  83.203 │
│ 2022-07-11 │  144.01 │   76.95 │ missing │  66.709 │ 136.602 │  48.143 │ 278.782 │ 173.458 │ 109.423 │ 61.107 │ 327.162 │  91.676 │ 261.978 │ 165.993 │  50.449 │ 141.395 │  26.022 │ missing │  123.46 │  82.778 │
│ 2022-07-12 │ 144.994 │   76.36 │ missing │  67.196 │ 134.102 │  49.006 │ 277.546 │ 171.026 │  109.53 │ 60.845 │ 319.771 │  90.995 │ 251.241 │ 165.049 │  49.639 │ 140.146 │  26.072 │ missing │ 123.086 │  81.676 │
│ 2022-07-13 │ 144.626 │   77.52 │ missing │  68.026 │ 133.204 │   48.22 │ 279.551 │ 170.628 │ 108.502 │ 60.563 │ 318.654 │  91.161 │ 250.301 │ 165.633 │    49.4 │ 141.066 │  26.803 │ 494.339 │ 123.381 │  82.005 │
│ 2022-07-14 │ 147.589 │    78.6 │ missing │  67.883 │ 131.225 │  47.505 │  281.79 │ 170.861 │ 104.711 │ 60.369 │ 323.032 │  91.268 │ 251.648 │  166.49 │  49.019 │  140.65 │   26.24 │ 495.513 │ 125.792 │  80.361 │
│ 2022-07-15 │ 149.279 │   81.11 │ missing │  69.152 │ 132.876 │  48.881 │ 284.642 │ 173.341 │  109.51 │  60.68 │ 327.686 │  92.318 │ 254.262 │ 166.626 │  49.362 │ 140.456 │  26.694 │ 522.457 │ 127.023 │  81.715 │
│ 2022-07-18 │ 146.197 │   81.43 │ missing │  69.982 │ 134.739 │  49.519 │ 285.265 │ 169.451 │ 108.385 │ 59.854 │ 317.972 │  89.771 │ 251.816 │ 163.841 │  48.408 │ 138.752 │  27.505 │  512.22 │ 126.727 │  83.222 │
│ 2022-07-19 │ 150.104 │   85.88 │ missing │  72.492 │ 139.595 │  51.899 │ 291.865 │  166.98 │ 111.071 │ 60.709 │  322.35 │   89.79 │ 257.045 │ 165.594 │  48.999 │ 139.459 │  28.058 │ 526.106 │ 127.505 │   85.32 │
│ 2022-07-20 │ 152.132 │   89.43 │ missing │  74.543 │ 141.438 │  52.793 │ 294.269 │ 166.027 │ 111.052 │ 59.709 │ 318.229 │  87.155 │ 259.759 │ 163.841 │  48.475 │ 137.048 │  29.966 │ 512.318 │ 128.568 │  86.257 │
│ 2022-07-21 │ 154.428 │   91.09 │ missing │  74.619 │ 140.357 │  52.979 │ 296.898 │ 166.611 │ 111.808 │ 59.573 │ 323.062 │  87.632 │ 262.305 │ 164.085 │  48.761 │ 137.178 │  30.065 │ 515.267 │ 130.447 │  84.817 │
│ 2022-07-22 │ 153.175 │    88.1 │ missing │  73.284 │ 139.189 │  53.026 │ 298.445 │ 167.399 │ 111.265 │ 59.796 │  324.87 │  87.603 │ 257.867 │ 165.156 │ missing │  139.37 │  29.373 │ 514.232 │ 130.113 │   84.17 │
│ 2022-07-25 │ 152.042 │   87.54 │ missing │  72.367 │  143.33 │  53.158 │ 298.017 │ 167.729 │ 111.711 │ 60.379 │ 327.637 │  88.011 │ 256.352 │ 165.389 │  49.381 │ 140.316 │  31.458 │ 522.181 │ 129.926 │  86.973 │
│ 2022-07-26 │   150.7 │   85.25 │ missing │  68.713 │ 142.211 │  55.608 │ 290.259 │ 168.916 │ 109.966 │ 61.369 │ 327.647 │   88.75 │ 249.488 │ 167.317 │  49.887 │ 140.588 │  32.713 │ 524.272 │ 120.045 │  86.634 │
│ 2022-07-27 │ 155.859 │   89.82 │ missing │ missing │ 144.083 │  55.662 │  290.97 │ 168.449 │  111.73 │ 61.175 │ 325.058 │  88.691 │ 266.167 │ 167.084 │  49.553 │ 141.924 │  33.296 │  527.25 │ 124.582 │   88.51 │
│ 2022-07-28 │ 156.416 │   91.67 │ missing │  74.419 │ 145.174 │  56.875 │  291.67 │ 169.422 │ 111.313 │ 62.194 │ 326.896 │  87.437 │ 273.764 │ 170.248 │  48.755 │ 144.282 │  31.903 │ 534.035 │ 127.692 │  89.544 │
│ 2022-07-29 │ 161.545 │   94.47 │ missing │  73.465 │   158.1 │  57.474 │ 292.946 │ 169.733 │ 111.847 │ 62.301 │ 325.799 │  86.854 │ 278.052 │ 170.365 │  48.553 │ 135.365 │ missing │ 534.874 │ 129.955 │   93.69 │
│ 2022-08-01 │ 160.551 │   96.78 │ missing │  73.455 │ 154.943 │  58.944 │ 297.696 │  169.14 │ 110.732 │ 62.641 │ 320.324 │  86.067 │ 275.348 │ 172.303 │  48.649 │ 139.253 │  31.844 │ 528.009 │ 130.438 │  91.322 │
│ 2022-08-02 │  159.06 │   99.29 │ missing │  71.194 │ 153.621 │  57.824 │ 292.722 │ 168.177 │ 109.006 │ 61.786 │ 316.421 │  85.172 │ 272.189 │ 170.881 │  47.765 │ 138.328 │   31.31 │ 528.088 │ 130.575 │  90.926 │
│ 2022-08-03 │ 165.144 │   98.09 │ missing │  72.224 │ 149.972 │   58.12 │ 298.231 │ 169.801 │  110.15 │ 62.058 │ 310.126 │  85.182 │ 279.766 │ 172.186 │  47.928 │ 141.183 │  31.399 │ 533.207 │  128.43 │  87.978 │
│ 2022-08-04 │ 164.826 │  103.91 │ missing │  72.797 │ 145.898 │  57.288 │  299.01 │ 167.078 │ 108.938 │ 61.815 │ 302.181 │  84.404 │ 280.934 │ 171.251 │  47.928 │ 140.959 │   29.65 │ 526.402 │ 123.578 │  84.276 │
│ 2022-08-05 │ 164.597 │  102.31 │ missing │  72.883 │ 148.312 │  57.824 │ 301.463 │ 166.416 │ 112.235 │ 61.534 │ 297.764 │  84.978 │ 280.202 │ 169.966 │  47.361 │ 141.027 │  30.381 │ 527.694 │ 124.572 │  85.494 │
│ 2022-08-08 │ 164.119 │  100.07 │ missing │  74.944 │  148.09 │  58.462 │ 303.683 │ 165.531 │ 110.867 │ 61.136 │ missing │  86.028 │ 277.636 │ 169.284 │  47.649 │ 141.563 │  29.748 │ 529.213 │ 125.586 │  85.977 │
│ 2022-08-09 │ 164.169 │   95.54 │ missing │  72.845 │  150.02 │  58.267 │ 297.102 │ 165.512 │ 111.866 │ 61.214 │ 299.444 │  87.029 │ 279.597 │ 169.917 │  47.851 │ 141.232 │  31.794 │ 529.864 │ 126.826 │  87.562 │
│ 2022-08-10 │ 168.469 │   99.05 │ missing │  74.915 │ 150.416 │  59.986 │ 303.303 │ 165.988 │ 114.784 │ 61.796 │ 301.015 │  86.708 │ 286.392 │  171.32 │  48.015 │ 142.567 │  32.318 │ 530.317 │ 127.091 │  88.394 │
│ 2022-08-11 │ 167.723 │   98.12 │ missing │  76.738 │ 154.084 │  61.355 │ 302.437 │ 162.555 │ 116.481 │ 61.379 │ 297.615 │  86.455 │ 284.272 │ 170.443 │  46.419 │ 141.553 │ missing │ 525.524 │ 128.317 │  90.951 │
│ 2022-08-12 │ 171.316 │  100.83 │ missing │  76.623 │ 154.306 │  62.155 │ 306.525 │ 160.766 │ 118.411 │ 61.845 │ 305.438 │  88.487 │ 289.115 │ 172.673 │  48.169 │ 142.927 │  33.712 │ 536.215 │ 130.689 │  91.741 │
│ 2022-08-15 │ 172.401 │  101.01 │ missing │  77.606 │ 151.372 │  62.062 │ 306.252 │ 161.534 │  118.73 │ 62.621 │ 311.247 │  88.079 │  290.66 │ 174.572 │  47.822 │ 144.769 │  32.397 │ 537.142 │ 131.065 │  90.102 │
│ 2022-08-16 │ 172.242 │   100.2 │ missing │   81.06 │ 150.985 │  63.042 │ 318.683 │ 162.973 │ 119.865 │ 63.136 │ 307.649 │  88.069 │ 289.908 │ 175.585 │  47.928 │ 146.104 │  33.079 │ 538.602 │ 137.757 │  89.262 │
│ 2022-08-17 │ 173.755 │   98.27 │  35.447 │  78.494 │ 152.231 │  62.148 │ 317.106 │ 162.983 │ 118.857 │  62.99 │ 314.103 │  88.507 │ 289.143 │ 175.487 │  47.361 │ 145.432 │   32.99 │ 537.497 │ missing │  89.984 │
│ 2022-08-18 │ 173.357 │  100.44 │   35.32 │  78.646 │   154.9 │  61.596 │ 316.571 │ 162.195 │ 117.935 │  63.32 │ 314.004 │  88.857 │ 288.002 │ 175.662 │  46.698 │ 145.948 │  33.909 │ 537.714 │  137.46 │  92.112 │
│ 2022-08-19 │ 170.739 │   95.95 │  34.541 │  75.889 │ 153.604 │  60.437 │ 312.784 │ 164.666 │ 115.017 │ 63.272 │ 320.002 │  89.518 │ 284.012 │ 175.438 │  47.246 │ 145.909 │    33.0 │ 540.771 │ 135.434 │  91.819 │
│ 2022-08-22 │ 166.807 │   92.84 │  33.802 │  73.875 │ 152.835 │  58.151 │ 303.916 │ 164.088 │ 113.117 │  62.33 │ 320.329 │  88.623 │ 275.675 │ 173.764 │  47.005 │ 145.519 │   34.65 │ 537.073 │ 133.012 │  91.751 │
│ 2022-08-23 │ 166.468 │   92.49 │    33.5 │   75.23 │ 157.793 │  59.177 │ 298.747 │ 162.659 │ 112.002 │ 62.398 │ 312.398 │   87.69 │ 274.375 │ 173.686 │   46.15 │ 142.713 │  33.583 │ 528.424 │ 132.449 │  95.645 │
│ 2022-08-24 │ 166.767 │   92.73 │  33.607 │  74.076 │ 158.962 │  59.675 │ 299.925 │  162.12 │ 112.273 │ 62.485 │ 316.135 │  87.505 │ 273.729 │ 174.552 │  45.592 │ 142.099 │  34.344 │ 529.075 │ 133.407 │  96.211 │
│ 2022-08-25 │ 169.256 │   97.18 │   34.21 │   74.61 │ 160.355 │  60.764 │ 301.551 │ 163.638 │  114.94 │ 62.786 │ 320.369 │  87.758 │ 276.767 │ 174.562 │  46.044 │ 141.982 │  34.048 │ 534.114 │ 134.297 │  96.709 │
│ 2022-08-26 │ 162.875 │   91.18 │   33.13 │  70.755 │ 159.176 │  58.532 │ 290.181 │ 160.837 │ 111.178 │ 61.272 │ 312.854 │  86.776 │ 266.087 │ 170.443 │  45.006 │ 138.659 │  34.087 │ 521.964 │ missing │  95.518 │
│ 2022-08-29 │ 160.645 │   88.49 │  33.003 │  70.325 │ 160.364 │  59.138 │ 288.448 │ 159.594 │ 110.906 │ 60.903 │  307.49 │  85.153 │ 263.248 │ 169.908 │  44.439 │ 138.074 │  33.761 │ 522.477 │ 131.342 │  97.714 │
│ 2022-08-30 │ 158.186 │   86.94 │  33.188 │  71.461 │ 156.458 │  58.423 │ 285.314 │ 159.036 │ 110.926 │  60.34 │ 304.407 │  84.462 │ 261.005 │ 168.447 │  44.074 │ 136.603 │   31.32 │ 515.642 │ 130.946 │  93.996 │
│ 2022-08-31 │ 156.504 │   84.87 │  32.721 │  67.453 │ 153.965 │  57.109 │  282.59 │ 157.969 │ 110.266 │ 59.913 │ 298.647 │  82.985 │ 259.516 │ 167.746 │  43.478 │  134.42 │  32.476 │  512.18 │ 131.015 │  93.293 │
│ 2022-09-01 │ 157.241 │   82.33 │  32.799 │   68.56 │  151.51 │  56.829 │  287.44 │ 161.885 │ 111.023 │ 60.194 │ 306.479 │  84.725 │ 258.454 │ 169.442 │  44.823 │ 136.077 │  31.587 │ 516.786 │ 132.923 │  91.614 │
│ 2022-09-02 │   155.1 │   80.24 │   32.76 │  67.883 │  153.76 │  56.323 │   286.0 │ 159.339 │ 110.247 │ 59.369 │ 298.746 │  83.831 │ 254.147 │ 167.295 │  43.929 │  133.66 │  31.794 │ 509.241 │  131.46 │  93.293 │
│ 2022-09-06 │ 153.826 │   78.72 │  32.398 │  68.112 │ 153.049 │  56.113 │ 283.687 │  159.77 │ missing │ 59.398 │ 304.189 │  84.015 │ 251.358 │ 166.168 │  43.987 │ 132.169 │  30.499 │ 510.553 │ 130.808 │  92.668 │
│ 2022-09-07 │  155.25 │   79.61 │  32.897 │  69.887 │ 151.091 │  57.218 │ 291.457 │ 160.642 │  112.37 │ 60.495 │ 308.928 │  84.453 │ 256.162 │ 169.834 │  44.343 │ 134.167 │  29.818 │ 514.498 │ 134.169 │  91.878 │
│ 2022-09-08 │ 153.756 │   82.78 │  33.956 │   71.28 │ missing │  57.365 │ 293.838 │ 161.934 │ 114.988 │ 60.311 │ 312.794 │  84.987 │ 256.588 │ 169.265 │  45.256 │ 134.342 │  30.163 │ 520.248 │ 134.851 │  92.629 │
│ 2022-09-09 │ 156.653 │   85.45 │   34.24 │  72.749 │ 155.825 │  57.575 │ 293.711 │ 162.247 │ 115.541 │ 60.505 │ missing │   84.91 │ 262.484 │ 169.805 │  45.986 │ 136.388 │  30.747 │ 518.744 │ 135.256 │  94.181 │
│ 2022-09-12 │ 162.686 │   84.64 │  34.563 │  74.257 │  158.29 │  58.571 │ 291.526 │ 162.179 │ 116.908 │  60.68 │ 312.517 │  85.707 │ 264.658 │ 170.471 │   45.91 │ 137.499 │  31.626 │  525.58 │ 136.472 │  95.264 │
│ 2022-09-13 │ 153.139 │   77.03 │  33.319 │  70.316 │  155.28 │  55.087 │ 272.312 │ 157.959 │ 112.845 │ 58.709 │ missing │  83.879 │ 250.107 │ 164.109 │    44.4 │ 134.654 │  31.102 │ 508.475 │ 133.655 │  93.039 │
│ 2022-09-14 │ 154.603 │   77.45 │  33.191 │  70.182 │  159.04 │  54.457 │ 270.754 │ 161.219 │ 112.584 │ 59.019 │ 306.955 │  85.212 │ 250.336 │ 165.354 │  44.362 │ 134.975 │  32.658 │ 504.329 │ 133.358 │  95.323 │
│ 2022-09-15 │ 151.676 │   76.66 │  33.818 │  69.104 │ 156.458 │  53.586 │ 266.051 │ 161.631 │  114.28 │ 58.217 │ 306.816 │  85.016 │ 243.547 │ 162.609 │   44.16 │ 133.933 │  31.122 │ 517.329 │ 131.925 │  92.551 │
│ 2022-09-16 │ 150.014 │   76.51 │  33.436 │  69.304 │ 152.396 │  51.626 │ 270.392 │ 164.098 │ missing │ 58.227 │ 306.241 │  85.967 │ 242.911 │ 163.678 │  44.247 │ 134.751 │  29.418 │ 515.459 │ 131.648 │   90.97 │
│ 2022-09-19 │ 153.776 │   76.77 │  33.995 │  71.449 │ 152.835 │   52.14 │ 274.752 │ 162.805 │ missing │ 58.667 │ 302.473 │  84.908 │ 242.693 │ 165.403 │  43.679 │ 134.469 │  30.042 │ 517.962 │ 132.775 │   90.96 │
│ 2022-09-20 │ 156.185 │   75.25 │  33.485 │  68.503 │ 152.231 │  51.782 │ 268.628 │ 161.523 │ 112.302 │ 58.579 │ 299.142 │  84.281 │ 240.639 │ 165.589 │  43.035 │ 133.991 │  29.596 │  517.22 │ 132.004 │  90.219 │
│ 2022-09-21 │  153.02 │   74.48 │  32.486 │  67.595 │ 150.994 │  50.717 │ 266.081 │ 159.868 │ 109.064 │  58.09 │ 293.937 │   82.84 │ 237.165 │ 165.119 │  42.218 │ 132.266 │  28.784 │ 506.615 │  133.21 │  88.764 │
│ 2022-09-22 │ 152.044 │    69.5 │  31.849 │  66.233 │ 150.877 │  50.825 │   263.7 │ 162.708 │ 107.823 │ 57.953 │ 308.204 │  85.761 │  239.18 │ 165.276 │  42.843 │ 132.734 │  27.179 │ 511.937 │ 131.846 │  88.394 │
│ 2022-09-23 │ 149.745 │   67.96 │  31.094 │  66.436 │ 141.019 │  50.196 │ 265.463 │ 163.236 │ 105.816 │ 57.308 │ 308.789 │  85.045 │ 236.142 │ 165.197 │  42.372 │  132.12 │  24.771 │ 508.128 │ 128.554 │  83.689 │
│ 2022-09-26 │ 150.083 │    66.3 │  30.408 │  63.094 │ 137.308 │  50.102 │ 261.191 │ 162.238 │ 103.538 │ 56.594 │ 304.863 │  84.457 │ 235.676 │ 165.129 │  42.132 │ 132.247 │  23.522 │ 502.935 │  129.79 │  81.962 │
│ 2022-09-27 │ 151.069 │   67.17 │  29.957 │  63.181 │ 137.366 │  50.196 │ 263.259 │ 161.493 │ missing │ 55.137 │ 308.432 │  84.124 │ 234.644 │ 162.737 │  42.382 │ 128.612 │  23.473 │ 502.944 │ 129.434 │   83.68 │
│ 2022-09-28 │ 149.157 │   68.36 │  30.447 │  65.141 │ 142.003 │  50.188 │ 276.486 │ 162.884 │ 104.701 │ 55.724 │ 331.512 │  85.045 │ 239.269 │ 165.344 │  42.709 │ 128.612 │  24.612 │ 508.455 │ 131.569 │  86.725 │
│ 2022-09-29 │ 141.831 │   64.14 │  30.046 │  62.862 │ 141.019 │  48.841 │ 272.704 │ 161.092 │ 102.927 │ 55.323 │  327.18 │  84.908 │ 235.726 │ 163.325 │  42.449 │ 125.416 │  24.345 │   503.4 │ 130.719 │  86.549 │
│ 2022-09-30 │  137.57 │   63.36 │  29.595 │  61.181 │ 139.947 │  48.202 │ 270.362 │ 159.946 │ 101.317 │ 54.785 │ 320.577 │  84.399 │  231.16 │ 160.041 │  42.065 │ 123.028 │  25.029 │  499.65 │ 128.198 │  85.212 │
│ 2022-10-03 │ 141.801 │   66.11 │  30.467 │    61.5 │ 147.799 │  49.518 │ 277.965 │  159.79 │ 104.449 │ 55.401 │ 318.792 │    85.8 │ 238.941 │ 161.992 │   42.43 │ 125.231 │  26.099 │ 510.008 │ 130.996 │  89.711 │
│ 2022-10-04 │ 145.435 │    67.9 │  31.731 │  65.103 │ 153.546 │  52.586 │ 283.707 │ 162.159 │ 109.336 │ 55.528 │ 327.061 │  86.623 │ 247.021 │ 163.815 │  42.737 │  126.78 │  27.902 │ 517.586 │ 132.696 │  92.981 │
│ 2022-10-05 │ 145.733 │   67.94 │   31.28 │  65.586 │ 154.422 │  52.508 │ 283.991 │  161.66 │ 107.986 │   55.0 │ 328.934 │  86.623 │ 247.338 │ 162.727 │  42.411 │ 125.903 │  28.744 │ 521.445 │ 131.381 │  96.738 │
│ 2022-10-06 │ 144.768 │   67.85 │   30.83 │  64.533 │ 157.238 │  51.558 │  284.52 │ 158.527 │ 105.785 │ 53.817 │ 330.094 │  85.692 │ 244.946 │  159.59 │   41.42 │ 123.252 │  27.496 │  513.59 │ 130.156 │  99.607 │
│ 2022-10-07 │ 139.452 │   58.44 │  30.134 │  62.331 │ 155.884 │  50.266 │ 278.573 │ 156.852 │ 103.672 │ 53.308 │ 323.858 │  85.849 │  232.49 │ 158.423 │   40.68 │ 121.099 │  26.842 │ 499.462 │ 127.072 │  98.602 │
│ 2022-10-10 │  139.78 │   57.81 │  30.046 │  61.181 │ 153.068 │  50.593 │ 276.751 │ 157.058 │ 102.703 │ 53.191 │ 321.112 │  88.671 │ 227.537 │ 158.629 │  40.132 │ 120.602 │  26.703 │ missing │ 127.823 │  96.465 │
│ 2022-10-11 │ 138.347 │   57.63 │  29.173 │ missing │ 153.098 │   49.83 │ 277.172 │  159.33 │  99.739 │ 53.279 │  324.79 │   89.23 │ 223.726 │ 159.384 │  40.296 │  121.06 │  26.842 │ 494.476 │ 131.134 │  95.645 │
│ 2022-10-12 │  137.71 │   57.85 │  29.262 │  61.046 │ 153.555 │  50.406 │  274.85 │  159.29 │ 101.353 │ 53.924 │ 321.786 │  88.613 │ 224.063 │  166.05 │  40.402 │ 121.255 │  27.535 │ 494.624 │ 129.651 │  96.065 │
│ 2022-10-13 │ 142.339 │   58.94 │  31.055 │  62.311 │ 160.998 │  52.897 │ 277.113 │ 161.699 │ 106.988 │ 54.638 │ 329.252 │  90.641 │  232.49 │ 171.167 │  41.315 │ 123.087 │  28.516 │ 504.468 │ 130.749 │  99.422 │
│ 2022-10-14 │  137.75 │   55.94 │  31.065 │  61.191 │ 155.991 │  52.609 │ 270.842 │ 161.023 │ 108.768 │ 53.768 │ 328.548 │  90.337 │ 226.852 │ 166.834 │  41.199 │ 121.888 │  26.663 │ 507.654 │  128.92 │  96.806 │
│ 2022-10-17 │ 141.761 │   57.96 │  32.946 │  63.354 │  157.13 │  53.435 │ 275.575 │ 163.109 │ 113.337 │ 54.462 │ missing │  92.239 │ 235.755 │ 169.324 │  41.959 │  124.09 │  27.109 │  516.31 │ 129.849 │  98.202 │
│ 2022-10-18 │ 143.095 │   57.92 │  34.181 │  64.291 │ 158.504 │ missing │ 279.298 │ 162.541 │ 116.252 │ 55.196 │ 332.157 │  92.719 │ 236.718 │ 171.608 │  42.382 │ 125.094 │  27.813 │ 516.637 │ 132.587 │  98.378 │
│ 2022-10-19 │ 143.205 │   57.23 │   33.24 │  61.567 │ 163.647 │  54.914 │ 269.921 │ 161.249 │ 113.972 │ 54.726 │ 326.466 │  91.396 │ 234.713 │ 169.942 │   41.44 │ 126.254 │  28.011 │ 514.767 │ 132.211 │ 101.296 │
│ 2022-10-20 │ 142.737 │   57.77 │  33.025 │  60.708 │ 164.582 │  54.478 │ 264.013 │  161.66 │ 113.601 │ 53.866 │ 326.248 │  91.082 │ 234.386 │ 168.079 │  41.247 │ 124.628 │  26.802 │ 515.321 │ 132.538 │ 101.433 │
│ 2022-10-21 │ 146.599 │   58.82 │   34.25 │  61.596 │ 168.703 │  56.697 │ 269.961 │ 165.185 │ 119.568 │ 54.726 │ 337.847 │  93.758 │ 240.311 │ 169.648 │  43.208 │ 126.188 │  25.613 │ 528.034 │ 135.216 │ 103.316 │
│ 2022-10-24 │ 148.769 │    58.7 │  34.367 │  61.625 │ 168.644 │  57.117 │ 277.534 │ 167.407 │ 119.715 │ 56.301 │ 344.916 │  95.424 │ 245.403 │ 174.177 │  43.776 │ 126.963 │  26.277 │  535.82 │ 137.796 │ 104.038 │
│ 2022-10-25 │ 151.646 │   61.47 │  34.681 │  63.451 │ 170.398 │  56.837 │ 284.393 │ 167.143 │ 120.028 │  57.65 │ 348.297 │  95.757 │ 248.787 │ 174.755 │  43.824 │ 128.426 │  28.338 │ 534.454 │ 138.448 │ 103.336 │
│ 2022-10-26 │  148.67 │   59.73 │  34.985 │  63.741 │ 172.502 │  58.752 │ 284.285 │ 168.612 │ 121.407 │ 58.081 │ 354.791 │  96.443 │ 229.592 │ 175.539 │  44.275 │ 129.329 │  27.743 │ 537.373 │ 139.506 │ 104.565 │
│ 2022-10-27 │  144.14 │    58.6 │  35.151 │  63.596 │ 173.291 │  59.173 │ 285.177 │ 168.709 │ 121.886 │ 58.217 │ 353.274 │  97.746 │ 225.056 │ 175.353 │  43.968 │ 129.427 │  27.337 │ 536.018 │ 139.101 │ 104.966 │
│ 2022-10-28 │ 155.031 │   62.01 │  35.455 │   66.02 │ 175.317 │  60.987 │ 292.613 │ 171.216 │ 123.334 │  59.42 │ 356.813 │  98.756 │ 234.108 │ 178.637 │  45.592 │ 132.705 │  26.881 │ 545.357 │  140.86 │  108.04 │
│ 2022-10-31 │ 152.642 │   60.06 │  35.318 │  66.078 │ 176.213 │  60.582 │ 290.144 │ 170.335 │ 123.138 │  58.53 │ 358.985 │  99.177 │ 230.396 │   178.0 │  44.746 │ 132.165 │  28.219 │ 549.225 │ 140.682 │ 108.147 │
│ 2022-11-01 │ 149.964 │   59.66 │  35.475 │  66.532 │ 177.499 │  60.893 │ 290.076 │ 169.473 │ 125.359 │ 58.325 │ 349.556 │  97.766 │ 226.465 │ 177.196 │   46.15 │ 132.371 │  27.981 │ 541.469 │  140.05 │ 109.221 │
│ 2022-11-02 │ 144.369 │   58.63 │  35.367 │   63.76 │ 173.875 │  60.263 │ 282.894 │ 166.869 │ 124.205 │ 57.513 │ 351.916 │  97.413 │ 218.456 │ 174.726 │  45.246 │ 130.467 │  27.288 │  537.63 │ 139.121 │ 106.976 │
│ 2022-11-03 │ 138.247 │   60.11 │  35.171 │  64.784 │ 176.437 │  61.026 │  275.81 │ 167.153 │  124.43 │ 57.484 │ 358.578 │  96.776 │ 212.649 │ 174.275 │  45.149 │ 129.574 │  26.881 │ 537.808 │ 139.091 │  108.43 │
│ 2022-11-04 │ 137.978 │   62.19 │  36.053 │  65.875 │ 178.668 │   63.12 │ 278.289 │ 167.897 │ 127.834 │ 57.953 │ 354.345 │  97.217 │ 219.736 │ 175.255 │   45.78 │ 131.939 │  27.763 │ 532.426 │ 139.338 │ 109.611 │
│ 2022-11-07 │ 138.517 │   63.08 │  36.268 │   66.32 │ 180.801 │  64.981 │ 284.403 │ 169.365 │ 128.509 │ 58.178 │ 361.939 │   98.07 │ 226.167 │ 176.657 │  45.653 │ 133.961 │  29.557 │ 539.203 │ 140.801 │ 110.909 │
│ 2022-11-08 │ 139.095 │   63.85 │  36.366 │  66.474 │ 180.538 │  65.401 │ 285.255 │ 170.207 │ 128.587 │ 58.286 │ 363.515 │ missing │  227.16 │ 177.147 │  45.906 │ 134.265 │  28.833 │ 547.148 │ 141.137 │ 111.261 │
│ 2022-11-09 │ 134.478 │   59.92 │  35.788 │  65.006 │  173.32 │   64.74 │ 280.954 │ 168.847 │ 126.914 │ 57.474 │ 360.154 │  99.559 │ 222.833 │ 175.029 │  45.295 │ 133.941 │  26.327 │  534.89 │ 137.855 │ 106.283 │
│ 2022-11-10 │ 146.444 │   68.47 │  37.366 │  69.575 │ 176.602 │  66.476 │   305.4 │ 170.824 │ 132.138 │ 59.538 │ 365.558 │  99.853 │ 241.165 │ 178.117 │  45.935 │ 138.554 │  28.477 │ 538.362 │ 140.712 │ 107.845 │
│ 2022-11-11 │ 149.265 │   72.37 │   37.64 │  72.009 │ 181.629 │    67.2 │ 308.574 │ 165.713 │ 132.353 │ 59.968 │ 349.278 │  96.002 │ 245.264 │ 174.539 │  46.148 │ 138.348 │  28.754 │ 516.508 │ 140.929 │ 111.212 │
│ 2022-11-14 │ 147.849 │   73.53 │  37.003 │  71.729 │ 181.716 │  66.826 │ 300.716 │ 168.318 │ 130.993 │ 59.391 │ 353.991 │  98.344 │ 239.745 │ 173.245 │  47.738 │ 138.357 │  28.239 │ 508.267 │ 136.788 │ 111.536 │
│ 2022-11-15 │ 149.604 │   76.37 │  36.945 │  73.023 │ 183.178 │  67.846 │ 305.625 │ 168.788 │ 130.045 │ 59.293 │ 347.916 │  97.609 │ 240.162 │ 173.696 │  47.088 │ 137.877 │  29.091 │ 497.642 │ 145.733 │ 112.284 │
│ 2022-11-16 │ 148.358 │    72.7 │  36.611 │  66.764 │ 180.197 │  66.102 │ 308.545 │ 169.835 │ 130.221 │ 59.186 │ 350.879 │  97.933 │   240.6 │ 174.814 │ missing │ 139.103 │  27.852 │ 506.061 │ 146.781 │ 111.084 │
│ 2022-11-17 │ 150.282 │    73.9 │  36.425 │  67.643 │ 180.707 │  66.484 │ 305.145 │ 171.206 │ 129.653 │ 59.371 │ 358.674 │ 100.265 │  240.55 │  176.48 │  46.856 │ 138.249 │  28.169 │  509.81 │ 146.287 │ 111.231 │
│ 2022-11-18 │ 150.851 │   73.57 │  36.445 │  69.594 │ 179.628 │  66.554 │  306.85 │ 172.518 │ 130.925 │ 59.792 │ 359.568 │ 102.147 │ 240.092 │ 177.755 │  46.759 │ 139.918 │ missing │ 524.344 │ 148.491 │ 110.267 │
│ 2022-11-21 │  147.58 │   72.46 │  36.562 │  68.416 │  177.91 │  66.873 │ 310.377 │ 173.405 │ 130.152 │ 60.711 │ 359.071 │ 103.499 │ 240.919 │ 181.176 │   46.71 │ 141.694 │  27.951 │  511.67 │   149.4 │ 109.175 │
│ 2022-11-22 │ 149.744 │   75.25 │  36.739 │  77.157 │ missing │  67.971 │ 318.313 │ 174.243 │ 132.099 │ 60.975 │ 358.783 │ 104.763 │ 243.885 │ 181.195 │  47.583 │ 142.911 │  29.943 │ missing │ 149.934 │ 112.333 │
│ 2022-11-23 │ 150.631 │    76.4 │  36.856 │  79.582 │ 180.855 │  68.415 │ 315.011 │  174.43 │ 133.507 │ 61.249 │ 359.618 │ 104.685 │ 246.423 │ 181.431 │   47.36 │ 143.726 │  29.497 │ 524.057 │ 150.655 │ 111.773 │
│ 2022-11-25 │  147.68 │   75.14 │  36.945 │  78.461 │ 180.324 │  68.625 │ 319.783 │ 174.657 │ 133.762 │ 61.308 │ 363.128 │ missing │ 246.333 │  180.48 │  47.709 │ 143.991 │  29.349 │ 531.882 │ 151.298 │ 111.379 │
│ 2022-11-28 │ 143.801 │   73.19 │  36.121 │  79.292 │ 175.083 │  66.546 │ 312.474 │ 174.745 │ 131.424 │ 61.318 │ 363.645 │ 106.282 │  240.63 │ 180.264 │  48.058 │ 143.873 │   28.07 │ 526.589 │ 151.733 │ 108.034 │
│ 2022-11-29 │  140.76 │   73.39 │  36.259 │  81.291 │ 177.704 │  66.694 │ 309.573 │ 173.523 │ 133.586 │ 61.102 │ 361.835 │ 106.664 │ 239.207 │  178.99 │   47.98 │ 142.774 │  28.338 │ 522.365 │ 151.199 │ 108.752 │
│ 2022-11-30 │   147.6 │   77.63 │  37.092 │  82.393 │ 179.942 │  66.935 │ 319.362 │ 175.405 │ missing │ 62.649 │ 368.924 │ 107.919 │ 253.947 │ 181.852 │  48.601 │ 146.385 │  28.605 │ 541.914 │ 150.655 │ 109.539 │
│ 2022-12-01 │ 147.879 │   77.48 │  36.027 │  83.523 │ 179.137 │ missing │ 322.398 │ 176.135 │ 133.273 │ 62.826 │ 368.178 │ 107.605 │ 253.499 │ 183.371 │  49.522 │ 146.474 │  27.734 │  531.18 │ 151.594 │ 109.008 │
│ 2022-12-02 │ 147.381 │   74.98 │  35.564 │  83.648 │ 177.704 │  67.644 │ 323.304 │ 176.273 │ 132.216 │ 63.377 │ 372.582 │  107.84 │ 253.828 │ 183.164 │  49.357 │ 147.808 │  26.594 │ 532.073 │ 151.446 │ 108.083 │
│ 2022-12-05 │ 146.204 │   73.62 │  33.977 │  81.446 │ 173.316 │  65.915 │ 315.507 │ 176.174 │ 128.509 │ 62.511 │ 367.144 │ 107.811 │  249.03 │ 180.629 │  49.182 │ 146.317 │  24.989 │ 530.961 │ 149.894 │ 105.122 │
│ 2022-12-06 │ 142.495 │   70.27 │  32.528 │  80.441 │ 168.849 │  66.398 │ 312.915 │ 173.533 │ 128.724 │ 62.481 │ 366.398 │ 106.753 │ 243.974 │ 179.159 │  48.194 │ 146.503 │  25.276 │ 535.209 │ 148.155 │   102.2 │
│ 2022-12-07 │ 140.531 │   70.14 │  32.272 │  78.597 │  169.35 │   66.18 │ 315.576 │ 174.588 │ 128.636 │  62.58 │ 369.809 │ 107.889 │ 243.228 │ 179.702 │  48.707 │ 147.445 │  25.038 │ 538.771 │ 147.384 │ 101.974 │
│ 2022-12-08 │ 142.236 │   70.47 │  31.976 │  80.557 │ 170.351 │  65.113 │  319.46 │ 174.617 │ 129.986 │ 62.846 │  369.63 │ 108.634 │ 246.244 │  181.28 │    50.2 │ 148.505 │  24.484 │ 543.743 │ 147.612 │ 102.731 │
│ 2022-12-09 │ 141.747 │   68.59 │  31.917 │  79.022 │ 164.913 │  63.416 │ 315.902 │ 173.178 │ 129.282 │ 62.186 │ 358.892 │ 106.606 │ 244.273 │ 180.609 │  50.142 │ 148.113 │  24.989 │  535.09 │ 144.169 │ 101.865 │
│ 2022-12-12 │  144.07 │   70.67 │  32.262 │  80.525 │ 166.631 │  64.786 │ 323.295 │ 175.248 │ 131.287 │ 63.003 │ 365.116 │ 106.792 │  251.33 │ 181.467 │  50.569 │ 149.634 │  26.287 │ 541.699 │ 146.858 │ 104.374 │
│ 2022-12-13 │ 145.048 │   71.65 │  32.281 │  82.088 │ 170.341 │  64.529 │ 328.134 │ 176.598 │  131.16 │ 63.023 │ 356.576 │ 108.693 │ 255.719 │ 181.369 │  51.451 │ 149.408 │  26.663 │ 534.117 │ 146.332 │ 105.515 │
│ 2022-12-14 │ 142.794 │   68.93 │  31.818 │  78.914 │ 169.163 │  63.493 │ 328.667 │  177.14 │ 130.504 │ 63.023 │ 361.388 │ 110.045 │ 256.018 │ 180.866 │  52.818 │ 149.997 │  26.286 │ 534.256 │ 145.519 │ 104.738 │
│ 2022-12-15 │ 136.104 │   66.53 │  31.315 │  78.875 │ 167.897 │   61.42 │  322.92 │ 174.903 │ missing │ 62.156 │ 357.918 │  108.15 │ 247.846 │ 177.798 │  51.975 │ 148.299 │  26.673 │ 523.658 │ 144.219 │ 103.735 │
│ 2022-12-16 │ 134.119 │   65.41 │  31.246 │  77.606 │  165.62 │  60.516 │ 318.721 │ 173.109 │ 126.474 │ 61.802 │ 357.779 │ 107.726 │ 243.546 │ 177.887 │  49.832 │ 147.641 │ missing │ 519.708 │ 141.629 │ 103.007 │
│ 2022-12-19 │ 131.986 │   64.59 │  31.601 │ missing │ 166.758 │  60.835 │ 312.797 │ 172.922 │ 127.227 │  61.89 │ 355.701 │ 107.963 │ 239.326 │ 178.873 │  49.793 │ 147.602 │   25.64 │ 519.609 │ 141.679 │ 103.469 │
│ 2022-12-20 │ 131.916 │   65.05 │  31.729 │  77.371 │ 169.497 │  62.604 │ 310.342 │ 173.109 │ 127.844 │ 61.841 │  357.55 │ 108.229 │  240.67 │ 178.765 │  49.754 │ 147.661 │   25.65 │ 516.245 │ 142.919 │ 104.964 │
│ 2022-12-21 │ 135.057 │   67.68 │  32.212 │  78.729 │  171.49 │   64.67 │ 314.798 │  175.09 │ 129.282 │ 62.836 │ 365.872 │ 109.611 │ 243.287 │ 180.017 │  50.084 │ 149.015 │  26.574 │ 523.519 │  144.04 │ 106.312 │
│ 2022-12-22 │ 131.846 │   63.86 │  31.927 │  78.563 │ 168.918 │  63.727 │ 311.604 │  174.45 │ 127.814 │ 62.383 │ 363.187 │ 109.739 │ 237.077 │ 178.627 │  50.065 │ 149.359 │  25.232 │ 523.072 │ 142.354 │ 104.168 │
│ 2022-12-23 │ 131.477 │   64.52 │  32.005 │  79.432 │  174.14 │  63.742 │ 314.177 │ 174.893 │ 128.421 │ 62.855 │ 365.762 │  110.35 │ 237.614 │ 179.781 │  50.249 │ 149.781 │  26.226 │  527.26 │ 142.641 │ 106.922 │
│ 2022-12-27 │ 129.652 │   63.27 │  32.065 │   79.93 │ 176.329 │  64.561 │ 314.985 │ 174.844 │ 128.871 │  63.24 │  362.76 │ 110.607 │ 235.852 │  180.58 │   49.57 │ 151.086 │  26.375 │ 527.935 │ 142.681 │ 108.408 │
│ 2022-12-28 │ 125.674 │   62.57 │  32.301 │  78.279 │ 173.728 │  63.883 │  311.22 │ 174.085 │ 129.575 │ 62.609 │ 363.098 │ 109.581 │ 233.434 │ 179.278 │   49.25 │ 149.133 │  24.497 │ 524.422 │ 140.181 │ 106.627 │
└────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘

2. Diagnose the missingness

Before deciding what to carry, fill or drop, measure it. The per-column and per-row missing fractions are the quantities MissingDataFilter's two thresholds count.

Their names read as the axis that is counted, not the axis that is dropped: col_thr counts the missing rows of a column and drops the column, and row_thr counts the missing columns of a row and drops the row. Both default to 1.0, so nothing is dropped unless you ask, and both admit 0.0, which tolerates no gap at all. The conversion itself drops neither axis.

col_missing = vec(mean(ismissing, vals; dims = 1))worst_cols = sort(DataFrame(; asset = nx, missing_frac = col_missing), :missing_frac;                  rev = true)pretty_table(first(worst_cols, 6); formatters = [resfmt],             title = "Missing fraction per asset (worst six)")
Missing fraction per asset (worst six)
┌────────┬──────────────┐
│  asset  missing_frac │
│ String      Float64? │
├────────┼──────────────┤
│    BAC │     63.241 % │
│    AMD │        8.3 % │
│    JPM │      5.138 % │
│    BBY │      2.767 % │
│    LLY │      2.372 % │
│    UNH │      2.372 % │
└────────┴──────────────┘

3. Ingest, and read the Listing Span

price_ingestion unifies missing and NaN as NaN — the one spelling the returns level can carry in a Matrix{Float64} — and reads the Span Rule off the whole panel. Reading it once, outside any fold, is what makes it a fact about the instruments rather than a judgement a window made.

Asset 3 is missing for its first 160 observations, so the span says it is not yet listed there. Asset 2's halt is interior, so the span says it is listed throughout and the halt is a Held Gap.

pr = price_ingestion(PriceIngestion(), Xmiss)span = Matrix(pr.span)pretty_table(DataFrame(; asset = nx[[3, 2, 4]],                       listed_from = [findfirst(view(span, :, j)) for j in (3, 2, 4)],                       listed_to = [findlast(view(span, :, j)) for j in (3, 2, 4)],                       observations = fill(T, 3));             title = "The Span Rule: a leading run is not-yet-listed, an interior one is a halt")
The Span Rule: a leading run is not-yet-listed, an interior one is a halt
┌────────┬─────────────┬───────────┬──────────────┐
│  asset  listed_from  listed_to  observations │
│ String        Int64      Int64         Int64 │
├────────┼─────────────┼───────────┼──────────────┤
│    BAC │         161 │       253 │          253 │
│    AMD │           1 │       253 │          253 │
│    BBY │           1 │       253 │          253 │
└────────┴─────────────┴───────────┴──────────────┘

4. Carry the gaps into the returns

The conversion computes returns and nothing else. Every asset keeps its column, every date keeps its row, and the cells a gap left behind are non-finite. A run of k gapped prices makes exactly the k + 1 returns that read one of them — the gap does not spread, because no asset's return reads another's price.

The AssetPanel that comes back states the universe: amsk is the span projected onto the returns clock, and emsk is that intersected with finiteness.

rd = prices_to_returns(PricesToReturns(), pr)pretty_table(DataFrame(;                       quantity = ["assets", "observations", "non-finite return cells",                                   "estimable cells"],                       value = [length(rd.nx), size(rd.X, 1), count(!isfinite, rd.X),                                count(Matrix(rd.pnl.emsk))]);             title = "Nothing is deleted, and the panel states what is estimable")
Nothing is deleted, and the panel states what is estimable
┌─────────────────────────┬───────┐
│                quantity  value │
│                  String  Int64 │
├─────────────────────────┼───────┤
│                  assets │    20 │
│            observations │   252 │
│ non-finite return cells │   297 │
│         estimable cells │  4743 │
└─────────────────────────┴───────┘

5. State a price convention across the halts

Carrying a gap is enough for everything downstream — the Coverage Universe excludes an asset from the windows it spoils. A caller who instead wants to say what happened during a halt reaches for PriceGapFill: it is fitted on a training window, replayed by name, and bounded by the Listing Span, so it touches Held Gaps alone and can never fabricate a price where an asset was not yet listed or has been delisted.

CarriedPrice states the Held Price — the last priced observation carried forward — so a halt becomes a flat stretch and zero returns through it, with the whole move landing on the observation that ends it. A per-asset reduction such as MedianValue() states a constant instead, which manufactures two moves the market never printed. Both conserve wealth across the gap; they differ in where the move lands.

fill_res = fit_preprocessing(PriceGapFill(), pr)pr_filled = apply_preprocessing(fill_res, pr)rd_filled = prices_to_returns(PricesToReturns(), pr_filled)pretty_table(DataFrame(; table = ["carried", "filled with the Held Price"],                       non_finite = [count(!isfinite, rd.X), count(!isfinite, rd_filled.X)],                       asset_3_still_unlisted = [true, !isfinite(rd_filled.X[1, 3])]);             title = "The fill closes the halts, and stops at asset 3's listing")
     The fill closes the halts, and stops at asset 3's listing
┌────────────────────────────┬────────────┬────────────────────────┐
│                      table  non_finite  asset_3_still_unlisted │
│                     String       Int64                    Bool │
├────────────────────────────┼────────────┼────────────────────────┤
│                    carried │        297 │                   true │
│ filled with the Held Price │        160 │                   true │
└────────────────────────────┴────────────┴────────────────────────┘

6. Drop what is too sparse to trust

Asset 3 is missing ~64% of the window. Carrying it costs nothing — it simply never enters a cross-section it cannot be estimated in — but a caller who wants it gone entirely says so with MissingDataFilter, and only with it: the conversion deletes no asset and no observation, because deleting either is a Universe Policy and a policy is fitted on a training window and replayed by name. That is exactly what this step does — it records the surviving names on the training window and replays them — so the universe is not re-chosen with each window's own hindsight.

mdf = fit_preprocessing(MissingDataFilter(; col_thr = 0.5), pr)println("Assets kept after the 50% column filter: $(length(mdf.nx)) of $N")
Assets kept after the 50% column filter: 19 of 20

7. Straight into the pipeline

A ReturnsResult carrying a panel is an ordinary one — it flows into the rest of the package with no special handling, and the panel is what keeps an asset the window cannot estimate out of the weights.

Solving on both tables shows what the fill buys. The Coverage Universe admits an asset only where its return is finite over the whole window, so the scattered single-day gaps alone exclude most of the book from the carried table. Closing the Held Gaps brings them back, and asset 3 stays out because it was not listed — which is the distinction the span exists to draw.

using Clarabelslv = Solver(; name = :clarabel, solver = Clarabel.Optimizer,             settings = Dict("verbose" => false),             check_sol = (; allow_local = true, allow_almost = true))function mv(rr)    return optimise(MeanRisk(; obj = MinimumRisk(),                             opt = JuMPOptimiser(; pe = prior(EmpiricalPrior(), rr),                                                 slv = slv)))endres = mv(rd)res_filled = mv(rd_filled)pretty_table(DataFrame(; table = ["carried", "filled with the Held Price"],                       estimable = [count(res.imsk), count(res_filled.imsk)],                       active_names = [count(>(1e-6), res.w), count(>(1e-6), res_filled.w)]);             title = "The panel keeps what the window cannot estimate out of the weights")
The panel keeps what the window cannot estimate out of the weights
┌────────────────────────────┬───────────┬──────────────┐
│                      table  estimable  active_names │
│                     String      Int64         Int64 │
├────────────────────────────┼───────────┼──────────────┤
│                    carried │         4 │            3 │
│ filled with the Held Price │        19 │           15 │
└────────────────────────────┴───────────┴──────────────┘

8. Visualising the damage

A heatmap of the missingness mask makes the structure obvious: the wide band is asset 3's late listing, the short block is asset 2's halt, and the speckle is the scattered gaps.

using StatsPlots, GraphRecipesheatmap(1:N, 1:T, Float64.(ismissing.(vals)); xlabel = "Asset", ylabel = "Day",        colorbar_title = "missing", title = "Missingness pattern (raw data)", yflip = true)
Example block output

Summary

The ingestion layer is the single entry point for cleaning price data:

  • price_ingestion unifies the two absent-price spellings, joins and collapses the series, and reads the Listing Span off the whole panel.
  • prices_to_returns computes returns and carries every gap, handing back an AssetPanel that states which assets are estimable when.
  • PriceGapFill states a price convention across a Held Gap, bounded by the span; MissingDataFilter deletes what is too sparse to trust, and it is the only thing that deletes anything. Both are fitted on a training window and replayed, because a universe chosen with hindsight is a look-ahead.

The point-in-time universe takes a gapped table through this layer to a walk-forward, and shows where a fitted fill sits in a Pipeline over the price carrier.

ADR 0133

nan_to_missing, impute_method, missing_col_percent and missing_row_percent used to live on prices_to_returns, and the default deleted every observation row holding a gap. ADR 0133 removed all four: a keyword survives on the conversion if and only if it changes the arithmetic of a return. Filling is PriceGapFill's and deleting is MissingDataFilter's, whose thresholds admit 0.0 for no gap is tolerated.

Three keywords pass the rule — ret_method, padding and gap_return_alg — and the rest of what the conversion used to take is now a field of the PricesResult it reads. join_method and collapse_args move the observation clock, so they belong to PriceIngestion. prices_to_returns(X) on a bare price table is exactly prices_to_returns(price_ingestion(PriceIngestion(), X)), so the friendliest call in the library is the layer's own path, and a caller wanting a different join, a collapse, a declared span, or factor and benchmark series writes the two steps.


This page was generated using Literate.jl.