diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bc7d0b..6566de0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## not released + +- XIRR Performance improvements + ## [0.10.2] - 2024-01-27 - (X)IRR Performance improvements diff --git a/README.md b/README.md index 6eaf09a..9e14617 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,9 @@ and the [implementation from the Stack Overflow](https://stackoverflow.com/a/115 ![bench](https://raw.githubusercontent.com/Anexen/pyxirr/main/docs/static/bench.png) -PyXIRR is ~10-20x faster in XIRR calculation than the other implementations. +PyXIRR is much faster than the other implementations. -Powered by [github-action-benchmark](https://github.com/rhysd/github-action-benchmark) and [plotly.js](https://github.com/plotly/plotly.js). +Powered by [github-action-benchmark](https://github.com/benchmark-action/github-action-benchmark) and [plotly.js](https://github.com/plotly/plotly.js). Live benchmarks are hosted on [Github Pages](https://anexen.github.io/pyxirr/bench). @@ -61,16 +61,16 @@ xirr(['2020-01-01', '2021-01-01'], [-1000, 1200]) # Multiple IRR problem -The Multiple IRR problem occur when the signs of cash flows change more than +The Multiple IRR problem occurs when the signs of cash flows change more than once. In this case, we say that the project has non-conventional cash flows. This leads to situation, where it can have more the one IRR or have no IRR at all. -PyXIRR's approach to the Multiple IRR problem: +PyXIRR addresses the Multiple IRR problem as follows: 1. It looks for positive result around 0.1 (the same as Excel with the default guess=0.1). 2. If it can't find a result, it uses several other attempts and selects the lowest IRR to be conservative. -Here is an example of how to find multiple IRRs: +Here is an example illustrating how to identify multiple IRRs: ```python import numpy as np diff --git a/bench-requirements.txt b/bench-requirements.txt index f9a5ca7..3632167 100644 --- a/bench-requirements.txt +++ b/bench-requirements.txt @@ -1,3 +1,2 @@ scipy==1.* numpy-financial==1.* -xirr==0.1.6 diff --git a/benches/comparison.rs b/benches/comparison.rs index eb13992..cbac161 100644 --- a/benches/comparison.rs +++ b/benches/comparison.rs @@ -10,7 +10,7 @@ mod common; use common::PaymentsLoader; // https://stackoverflow.com/questions/8919718/financial-python-library-that-has-xirr-and-xnpv-function -const TOP_STACK_OVERFLOW_ANSWER: &str = r#" +const PURE_PYTHON_IMPL: &str = r#" def xirr(transactions): years = [(ta[0] - transactions[0][0]).days / 365.0 for ta in transactions] residual = 1 @@ -32,13 +32,29 @@ def xirr(transactions): return guess "#; +const SCIPY_IMPL: &str = r#" +import scipy.optimize + +def xnpv(rate, values, dates): + if rate <= -1.0: + return float('inf') + d0 = dates[0] # or min(dates) + return sum([ vi / (1.0 + rate)**((di - d0).days / 365.0) for vi, di in zip(values, dates)]) + +def xirr(values, dates): + try: + return scipy.optimize.newton(lambda r: xnpv(r, values, dates), 0.0) + except RuntimeError: # Failed to converge? + return scipy.optimize.brentq(lambda r: xnpv(r, values, dates), -1.0, 1e10) +"#; + macro_rules! bench_rust { ($name:ident, $file:expr) => { #[bench] fn $name(b: &mut Bencher) { Python::with_gil(|py| { let data = PaymentsLoader::from_csv(py, $file).to_records(); - b.iter(|| pyxirr_call_impl!(py, "xirr", (data,)).unwrap()); + b.iter(|| pyxirr_call_impl!(py, "xirr", black_box((data,))).unwrap()); }); } }; @@ -49,10 +65,12 @@ macro_rules! bench_scipy { #[bench] fn $name(b: &mut Bencher) { Python::with_gil(|py| { - let xirr = - py.import("xirr").expect("xirr is not installed").getattr("xirr").unwrap(); - let data = PaymentsLoader::from_csv(py, $file).to_dict(); - b.iter(|| xirr.call1(black_box((data,))).unwrap()) + let xirr = PyModule::from_code(py, SCIPY_IMPL, "xirr.py", "scipy_py_xirr") + .unwrap() + .getattr("xirr") + .unwrap(); + let data = PaymentsLoader::from_csv(py, $file).to_columns(); + b.iter(|| xirr.call1(black_box((data.1, data.0))).unwrap()) }); } }; @@ -63,11 +81,10 @@ macro_rules! bench_python { #[bench] fn $name(b: &mut Bencher) { Python::with_gil(|py| { - let xirr = - PyModule::from_code(py, TOP_STACK_OVERFLOW_ANSWER, "xirr.py", "pure_py_xirr") - .unwrap() - .getattr("xirr") - .unwrap(); + let xirr = PyModule::from_code(py, PURE_PYTHON_IMPL, "xirr.py", "pure_py_xirr") + .unwrap() + .getattr("xirr") + .unwrap(); let data = PaymentsLoader::from_csv(py, $file).to_records(); b.iter(|| xirr.call1(black_box((data,))).unwrap()) }); @@ -75,14 +92,17 @@ macro_rules! bench_python { }; } -bench_rust!(bench_rust_100, "tests/samples/random_100.csv"); -bench_rust!(bench_rust_500, "tests/samples/random_500.csv"); -bench_rust!(bench_rust_1000, "tests/samples/random_1000.csv"); +bench_rust!(bench_rust_50, "tests/samples/rw-50.csv"); +bench_rust!(bench_rust_100, "tests/samples/rw-100.csv"); +bench_rust!(bench_rust_500, "tests/samples/rw-500.csv"); +bench_rust!(bench_rust_1000, "tests/samples/rw-1000.csv"); -bench_scipy!(bench_scipy_100, "tests/samples/random_100.csv"); -bench_scipy!(bench_scipy_500, "tests/samples/random_500.csv"); -bench_scipy!(bench_scipy_1000, "tests/samples/random_1000.csv"); +bench_scipy!(bench_scipy_50, "tests/samples/rw-50.csv"); +bench_scipy!(bench_scipy_100, "tests/samples/rw-100.csv"); +bench_scipy!(bench_scipy_500, "tests/samples/rw-500.csv"); +bench_scipy!(bench_scipy_1000, "tests/samples/rw-1000.csv"); -bench_python!(bench_python_100, "tests/samples/random_100.csv"); -bench_python!(bench_python_500, "tests/samples/random_500.csv"); -bench_python!(bench_python_1000, "tests/samples/random_1000.csv"); +bench_python!(bench_python_50, "tests/samples/rw-50.csv"); +bench_python!(bench_python_100, "tests/samples/rw-100.csv"); +bench_python!(bench_python_500, "tests/samples/rw-500.csv"); +bench_python!(bench_python_1000, "tests/samples/rw-1000.csv"); diff --git a/core/src/optimize.rs b/core/src/optimize.rs index 6b44076..d1343e4 100644 --- a/core/src/optimize.rs +++ b/core/src/optimize.rs @@ -1,5 +1,6 @@ const MAX_ERROR: f64 = 1e-9; const MAX_ITERATIONS: u32 = 50; +const MAX_FX_TOL: f64 = 1e-3; pub fn newton_raphson(start: f64, f: &Func, d: &Deriv) -> f64 where @@ -11,13 +12,13 @@ where let mut x = start; for _ in 0..MAX_ITERATIONS { - let res = f(x); + let y = f(x); - if res.abs() < MAX_ERROR { + if y.abs() < MAX_ERROR { return x; } - let delta = res / d(x); + let delta = y / d(x); if delta.abs() < MAX_ERROR { return x - delta; @@ -29,6 +30,35 @@ where f64::NAN } +// a slightly modified version that accepts a callback function that +// calculates the result and the derivative at once +pub fn newton_raphson_2(start: f64, fd: &Func) -> f64 +where + Func: Fn(f64) -> (f64, f64), +{ + // x[n + 1] = x[n] - f(x[n])/f'(x[n]) + + let mut x = start; + + for _ in 0..MAX_ITERATIONS { + let (y0, y1) = fd(x); + + if y0.abs() < MAX_ERROR { + return x; + } + + let delta = y0 / y1; + + if delta.abs() < MAX_ERROR && y0.abs() < MAX_FX_TOL { + return x; + } + + x -= delta; + } + + f64::NAN +} + pub fn newton_raphson_with_default_deriv(start: f64, f: Func) -> f64 where Func: Fn(f64) -> f64, @@ -47,8 +77,8 @@ pub fn brentq(f: &Func, xa: f64, xb: f64, iter: usize) -> f64 where Func: Fn(f64) -> f64, { - let xtol = 2e-14; - let rtol = 8.881784197001252e-16; + const XTOL: f64 = 2e-14; + const RTOL: f64 = 8.881784197001252e-16; let mut xpre = xa; let mut xcur = xb; @@ -86,11 +116,15 @@ where fblk = fpre; } - let delta = (xtol + rtol * xcur.abs()) / 2.; + let delta = (XTOL + RTOL * xcur.abs()) / 2.; let sbis = (xblk - xcur) / 2.; if fcur == 0. || sbis.abs() < delta { - return xcur; + return if fcur.abs() < MAX_FX_TOL { + xcur + } else { + f64::NAN + }; } if spre.abs() > delta && fcur.abs() < fpre.abs() { diff --git a/core/src/periodic.rs b/core/src/periodic.rs index 52b5b60..868e318 100644 --- a/core/src/periodic.rs +++ b/core/src/periodic.rs @@ -181,7 +181,6 @@ pub fn irr(values: &[f64], guess: Option) -> Result g, @@ -193,13 +192,13 @@ pub fn irr(values: &[f64], guess: Option) -> Result) -> Vec // \sum_{i=1}^n \frac{P_i}{(1 + rate)^{(d_i - d_0)/365}} fn xnpv_result(payments: &[f64], deltas: &[f64], rate: f64) -> f64 { + if rate <= -1.0 { + // bound newton_raphson + return f64::INFINITY; + } payments.iter().zip(deltas).map(|(p, &e)| p * fast_pow(1.0 + rate, -e)).sum() } @@ -93,8 +91,21 @@ fn xnpv_result(payments: &[f64], deltas: &[f64], rate: f64) -> f64 { // \sum_{i=1}^n P_i * (d_0 - d_i) / 365 * (1 + rate)^{((d_0 - d_i)/365 - 1)}} // simplify in order to reuse cached deltas (d_i - d_0)/365 // \sum_{i=1}^n \frac{P_i * -(d_i - d_0) / 365}{(1 + rate)^{((d_i - d_0)/365 + 1)}} -fn xnpv_result_deriv(payments: &[f64], deltas: &[f64], rate: f64) -> f64 { - payments.iter().zip(deltas).map(|(p, e)| p * -e * fast_pow(1.0 + rate, -e - 1.0)).sum() +// fn xnpv_result_deriv(payments: &[f64], deltas: &[f64], rate: f64) -> f64 { +// payments.iter().zip(deltas).map(|(p, e)| p * -e * fast_pow(1.0 + rate, -e - 1.0)).sum() +// } + +fn xnpv_result_with_deriv(payments: &[f64], deltas: &[f64], rate: f64) -> (f64, f64) { + if rate <= -1.0 { + return (f64::INFINITY, f64::INFINITY); + } + // pow is an expensive function. + // we can re-use the result of pow for derivative calculation + payments.iter().zip(deltas).fold((0.0, 0.0), |acc, (p, e)| { + let y0 = p * fast_pow(1.0 + rate, -e); + let y1 = y0 * -e / (1.0 + rate); + (acc.0 + y0, acc.1 + y1) + }) } #[cfg(test)] diff --git a/docs/bench/data.js b/docs/bench/data.js index 2d149ca..d9e7d80 100644 --- a/docs/bench/data.js +++ b/docs/bench/data.js @@ -1,5 +1,5 @@ window.BENCHMARK_DATA = { - "lastUpdate": 1706390745809, + "lastUpdate": 1706562288951, "repoUrl": "https://github.com/Anexen/pyxirr", "entries": { "Rust Benchmark": [ @@ -3496,6 +3496,288 @@ window.BENCHMARK_DATA = { "unit": "ns/iter" } ] + }, + { + "commit": { + "author": { + "name": "Anexen", + "username": "Anexen", + "email": "avolk93@gmail.com" + }, + "committer": { + "name": "Anexen", + "username": "Anexen", + "email": "avolk93@gmail.com" + }, + "id": "6cb556d9c05cc480388ca1290e39170f5543f7aa", + "message": "benchmark on data more similar to real ones", + "timestamp": "2024-01-28T16:47:59Z", + "url": "https://github.com/Anexen/pyxirr/commit/6cb556d9c05cc480388ca1290e39170f5543f7aa" + }, + "date": 1706460576741, + "tool": "cargo", + "benches": [ + { + "name": "bench_python_100", + "value": 983154, + "range": "± 17062", + "unit": "ns/iter" + }, + { + "name": "bench_python_1000", + "value": 10388792, + "range": "± 135498", + "unit": "ns/iter" + }, + { + "name": "bench_python_50", + "value": 432597, + "range": "± 5942", + "unit": "ns/iter" + }, + { + "name": "bench_python_500", + "value": 4885729, + "range": "± 181198", + "unit": "ns/iter" + }, + { + "name": "bench_rust_100", + "value": 9065, + "range": "± 1517", + "unit": "ns/iter" + }, + { + "name": "bench_rust_1000", + "value": 92868, + "range": "± 801", + "unit": "ns/iter" + }, + { + "name": "bench_rust_50", + "value": 4671, + "range": "± 143", + "unit": "ns/iter" + }, + { + "name": "bench_rust_500", + "value": 47235, + "range": "± 469", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_100", + "value": 393927, + "range": "± 8191", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_1000", + "value": 2573185, + "range": "± 39726", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_50", + "value": 272129, + "range": "± 16370", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_500", + "value": 1362752, + "range": "± 34827", + "unit": "ns/iter" + } + ] + }, + { + "commit": { + "author": { + "name": "Anexen", + "username": "Anexen", + "email": "avolk93@gmail.com" + }, + "committer": { + "name": "Anexen", + "username": "Anexen", + "email": "avolk93@gmail.com" + }, + "id": "6bcd9b21d0435523f3429f6a62056d4bcd936afa", + "message": "XIRR performance implrovements (faster deriv calculation)", + "timestamp": "2024-01-29T20:00:49Z", + "url": "https://github.com/Anexen/pyxirr/commit/6bcd9b21d0435523f3429f6a62056d4bcd936afa" + }, + "date": 1706558577156, + "tool": "cargo", + "benches": [ + { + "name": "bench_python_100", + "value": 975949, + "range": "± 30018", + "unit": "ns/iter" + }, + { + "name": "bench_python_1000", + "value": 10130819, + "range": "± 111258", + "unit": "ns/iter" + }, + { + "name": "bench_python_50", + "value": 430808, + "range": "± 11639", + "unit": "ns/iter" + }, + { + "name": "bench_python_500", + "value": 4793136, + "range": "± 41493", + "unit": "ns/iter" + }, + { + "name": "bench_rust_100", + "value": 7794, + "range": "± 94", + "unit": "ns/iter" + }, + { + "name": "bench_rust_1000", + "value": 76017, + "range": "± 912", + "unit": "ns/iter" + }, + { + "name": "bench_rust_50", + "value": 3996, + "range": "± 109", + "unit": "ns/iter" + }, + { + "name": "bench_rust_500", + "value": 39242, + "range": "± 642", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_100", + "value": 394794, + "range": "± 5858", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_1000", + "value": 2563700, + "range": "± 31954", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_50", + "value": 270042, + "range": "± 3789", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_500", + "value": 1352524, + "range": "± 23165", + "unit": "ns/iter" + } + ] + }, + { + "commit": { + "author": { + "name": "Anexen", + "username": "Anexen", + "email": "avolk93@gmail.com" + }, + "committer": { + "name": "Anexen", + "username": "Anexen", + "email": "avolk93@gmail.com" + }, + "id": "e502a995c373d8ca9cc453efd2c54b2f777f60db", + "message": "Merge branch 'main' of github.com:Anexen/pyxirr", + "timestamp": "2024-01-29T21:03:19Z", + "url": "https://github.com/Anexen/pyxirr/commit/e502a995c373d8ca9cc453efd2c54b2f777f60db" + }, + "date": 1706562288657, + "tool": "cargo", + "benches": [ + { + "name": "bench_python_100", + "value": 1000749, + "range": "± 9705", + "unit": "ns/iter" + }, + { + "name": "bench_python_1000", + "value": 10261778, + "range": "± 147793", + "unit": "ns/iter" + }, + { + "name": "bench_python_50", + "value": 433485, + "range": "± 7112", + "unit": "ns/iter" + }, + { + "name": "bench_python_500", + "value": 4869619, + "range": "± 80923", + "unit": "ns/iter" + }, + { + "name": "bench_rust_100", + "value": 7241, + "range": "± 142", + "unit": "ns/iter" + }, + { + "name": "bench_rust_1000", + "value": 71382, + "range": "± 553", + "unit": "ns/iter" + }, + { + "name": "bench_rust_50", + "value": 3710, + "range": "± 115", + "unit": "ns/iter" + }, + { + "name": "bench_rust_500", + "value": 39211, + "range": "± 393", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_100", + "value": 396989, + "range": "± 6889", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_1000", + "value": 2528037, + "range": "± 33570", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_50", + "value": 272457, + "range": "± 8982", + "unit": "ns/iter" + }, + { + "name": "bench_scipy_500", + "value": 1361712, + "range": "± 39716", + "unit": "ns/iter" + } + ] } ] } diff --git a/docs/bench/main.js b/docs/bench/main.js index e40a489..160a4cf 100644 --- a/docs/bench/main.js +++ b/docs/bench/main.js @@ -23,7 +23,7 @@ }); const formatRatio = (x) => { - return "x" + Plotly.d3.format("0.2f")(x); + return "x" + Plotly.d3.format("0.1f")(x); }; const formatDuration = (x) => { return Plotly.d3.format("0.4s")(x.value / 1e9) + "s"; diff --git a/docs/static/bench.png b/docs/static/bench.png index 56bf165..172e4ec 100644 Binary files a/docs/static/bench.png and b/docs/static/bench.png differ diff --git a/tests/samples/rw-100.csv b/tests/samples/rw-100.csv new file mode 100644 index 0000000..584d3ff --- /dev/null +++ b/tests/samples/rw-100.csv @@ -0,0 +1,101 @@ +2000-01-01,-1000000.0 +2000-01-01,10365.378864363389 +2000-01-31,14815.415470294169 +2000-03-01,12030.562733418017 +2000-03-31,11307.979942311524 +2000-04-30,17393.026477395906 +2000-05-30,10111.520084997483 +2000-06-29,11777.760495889588 +2000-07-29,9425.622181866325 +2000-08-28,15628.377143997544 +2000-09-27,9702.463005875723 +2000-10-27,15856.679956400441 +2000-11-26,7536.830552079986 +2000-12-26,15610.748972849195 +2001-01-25,12244.61630572664 +2001-02-24,11440.499598220922 +2001-03-26,16389.68889989676 +2001-04-25,8924.054568318044 +2001-05-25,14793.134925800208 +2001-06-24,16036.87407471702 +2001-07-24,11774.764247927264 +2001-08-23,10148.729650154515 +2001-09-22,15523.43345913048 +2001-10-22,12968.672606115631 +2001-11-21,13295.228164108466 +2001-12-21,17234.0533865184 +2002-01-20,12855.582301574757 +2002-02-19,11332.650415145608 +2002-03-21,10340.065865024482 +2002-04-20,10809.698350285784 +2002-05-20,9416.931526240587 +2002-06-19,10980.441703375955 +2002-07-19,10292.951072761207 +2002-08-18,17249.589174226494 +2002-09-17,12084.28998231004 +2002-10-17,9315.538003932472 +2002-11-16,8609.349472916037 +2002-12-16,14691.770706542706 +2003-01-15,8450.698171422924 +2003-02-14,12948.035349790975 +2003-03-16,13530.318420038606 +2003-04-15,14538.323495605848 +2003-05-15,12046.162449959194 +2003-06-14,10832.319130654103 +2003-07-14,16495.616055439532 +2003-08-13,10676.879107776198 +2003-09-12,12090.198592563082 +2003-10-12,10646.566503179505 +2003-11-11,10488.917821443225 +2003-12-11,10821.398073651553 +2004-01-10,13796.07016032582 +2004-02-09,17230.011611409267 +2004-03-10,11194.995563445955 +2004-04-09,11814.34556830408 +2004-05-09,13608.376888722712 +2004-06-08,10594.307904257505 +2004-07-08,10166.765732386435 +2004-08-07,15833.016943050037 +2004-09-06,9200.039765804853 +2004-10-06,8350.800836539574 +2004-11-05,15658.541973800531 +2004-12-05,9509.214362555325 +2005-01-04,14532.667944151059 +2005-02-03,10309.61112254181 +2005-03-05,10443.534156861997 +2005-04-04,14842.312924625034 +2005-05-04,15038.568489678159 +2005-06-03,15255.677522253782 +2005-07-03,16223.787124615072 +2005-08-02,15192.052628098396 +2005-09-01,8841.623001019849 +2005-10-01,13192.253118052433 +2005-10-31,12111.569405373712 +2005-11-30,14887.156246485036 +2005-12-30,12544.271309525768 +2006-01-29,16024.132284414649 +2006-02-28,16663.25391795901 +2006-03-30,14377.096445477888 +2006-04-29,10062.345942299968 +2006-05-29,11771.472692254092 +2006-06-28,17496.750504429547 +2006-07-28,10988.45972418063 +2006-08-27,17348.837398907228 +2006-09-26,12367.24713060131 +2006-10-26,9765.378568208846 +2006-11-25,15891.886411452715 +2006-12-25,12518.086311310873 +2007-01-24,8509.677591501983 +2007-02-23,8648.4031376079 +2007-03-25,13248.069865865491 +2007-04-24,15967.767234625975 +2007-05-24,8475.297565914076 +2007-06-23,16178.5238769798 +2007-07-23,10091.194073369616 +2007-08-22,10581.218629853609 +2007-09-21,11733.279338775046 +2007-10-21,12099.24135653874 +2007-11-20,14814.894928569258 +2007-12-20,13927.990551005641 +2008-01-19,14406.157556095503 +2008-02-18,16770.931116091037 diff --git a/tests/samples/rw-1000.csv b/tests/samples/rw-1000.csv new file mode 100644 index 0000000..fbd80b3 --- /dev/null +++ b/tests/samples/rw-1000.csv @@ -0,0 +1,1001 @@ +2000-01-01,-1000000.0 +2000-01-01,1558.4871652775541 +2000-01-08,1475.675449072993 +2000-01-15,782.9115005645303 +2000-01-22,1093.2402767189492 +2000-01-29,1011.269774358194 +2000-02-05,1666.8404027608651 +2000-02-12,1589.076817634181 +2000-02-19,1336.15162574853 +2000-02-26,1339.9852002014454 +2000-03-04,1714.82555540378 +2000-03-11,1704.409159769504 +2000-03-18,1115.366115850394 +2000-03-25,1506.5284148452024 +2000-04-01,1597.9769282750142 +2000-04-08,1081.61334825281 +2000-04-15,1385.1947117552552 +2000-04-22,1051.2716660973194 +2000-04-29,1694.3614731792536 +2000-05-06,1608.781753018459 +2000-05-13,1372.5677258065452 +2000-05-20,1000.6639162519444 +2000-05-27,968.8257756755584 +2000-06-03,1357.906338527122 +2000-06-10,1311.740312038741 +2000-06-17,1665.5689727845142 +2000-06-24,1415.6756594268213 +2000-07-01,979.3439497495581 +2000-07-08,1633.1191297632213 +2000-07-15,825.3630215482257 +2000-07-22,928.0934489806875 +2000-07-29,1136.281036297313 +2000-08-05,1062.3613273398623 +2000-08-12,1158.9159859754225 +2000-08-19,1586.8042675663596 +2000-08-26,929.2519762536988 +2000-09-02,1129.2677035123857 +2000-09-09,1330.113313257696 +2000-09-16,1643.6108197463932 +2000-09-23,1567.6603881059234 +2000-09-30,1192.9869990884501 +2000-10-07,1609.0298839842844 +2000-10-14,827.1088047571777 +2000-10-21,1071.3963872583454 +2000-10-28,1724.8405383748293 +2000-11-04,1369.284927839672 +2000-11-11,1250.5917273879925 +2000-11-18,1642.5006106398077 +2000-11-25,1115.2661803446945 +2000-12-02,1221.3867873772522 +2000-12-09,1504.8233044126591 +2000-12-16,948.0453079281845 +2000-12-23,953.0199139921662 +2000-12-30,1437.9182121100357 +2001-01-06,1316.8858340878123 +2001-01-13,1627.0723243353618 +2001-01-20,1217.3266810216257 +2001-01-27,1203.9467848722943 +2001-02-03,1740.7546774449584 +2001-02-10,923.5952005098185 +2001-02-17,1278.808429897833 +2001-02-24,1664.9712881142032 +2001-03-03,829.9115456781406 +2001-03-10,899.3005335024988 +2001-03-17,870.1074429125501 +2001-03-24,926.7569269756701 +2001-03-31,1421.6680968014184 +2001-04-07,1652.9279312026674 +2001-04-14,870.6032461962998 +2001-04-21,1396.155641389207 +2001-04-28,1330.329525484331 +2001-05-05,1035.5721282156287 +2001-05-12,931.0006097554198 +2001-05-19,1384.4317987970887 +2001-05-26,1393.833401255275 +2001-06-02,1428.78501877304 +2001-06-09,1708.9258181641148 +2001-06-16,764.9187228265992 +2001-06-23,971.6864719168125 +2001-06-30,1519.9357090332392 +2001-07-07,1644.4691075413314 +2001-07-14,824.9918648871983 +2001-07-21,1281.9307218791744 +2001-07-28,980.5125005365605 +2001-08-04,1625.752007660719 +2001-08-11,1464.2108240233438 +2001-08-18,1413.3717655145115 +2001-08-25,1040.9146772571173 +2001-09-01,830.184955239505 +2001-09-08,794.4058530237945 +2001-09-15,1658.2022426947476 +2001-09-22,757.3309114656003 +2001-09-29,1196.9656966141415 +2001-10-06,776.9870095487598 +2001-10-13,1704.4488899544938 +2001-10-20,1561.376363406818 +2001-10-27,1086.3179027126257 +2001-11-03,1698.439659056271 +2001-11-10,1721.4791723885842 +2001-11-17,1272.5577690166338 +2001-11-24,1181.1368238815835 +2001-12-01,1584.5055986033558 +2001-12-08,1273.4560245735809 +2001-12-15,1572.796679815334 +2001-12-22,1350.4347628497965 +2001-12-29,1570.3465670977464 +2002-01-05,951.5050706635972 +2002-01-12,1379.6422061527544 +2002-01-19,1338.9389637769962 +2002-01-26,1625.7779724742359 +2002-02-02,1510.7793800097124 +2002-02-09,768.3426591044175 +2002-02-16,1040.4740138889879 +2002-02-23,761.9893978069487 +2002-03-02,1244.8884012903939 +2002-03-09,1143.0294620496966 +2002-03-16,1573.6393886312628 +2002-03-23,1256.7223195827087 +2002-03-30,1267.1691524479693 +2002-04-06,1722.2552789078138 +2002-04-13,1307.4074112006522 +2002-04-20,1467.0265824245855 +2002-04-27,1017.92374412502 +2002-05-04,947.6347481843825 +2002-05-11,986.2451694094226 +2002-05-18,1712.1987637996208 +2002-05-25,1714.377459781244 +2002-06-01,932.0023440515904 +2002-06-08,1603.0144339054502 +2002-06-15,1586.041966628184 +2002-06-22,1721.539406363466 +2002-06-29,1730.2873339437572 +2002-07-06,1612.8575936229415 +2002-07-13,997.049467663871 +2002-07-20,1010.895436917981 +2002-07-27,1618.5680065242502 +2002-08-03,955.8476647088427 +2002-08-10,1170.6715986614956 +2002-08-17,1235.4688498447092 +2002-08-24,1459.396241790516 +2002-08-31,1718.219559646814 +2002-09-07,1746.6779693653316 +2002-09-14,1415.9628475539887 +2002-09-21,1182.0493757817624 +2002-09-28,1103.8867784687893 +2002-10-05,1161.8210471873897 +2002-10-12,1282.1643334826501 +2002-10-19,1535.265907510515 +2002-10-26,1707.862510419791 +2002-11-02,1448.2605135895685 +2002-11-09,1309.8459550562745 +2002-11-16,1708.9786597340888 +2002-11-23,1537.6529732683593 +2002-11-30,1089.465596685842 +2002-12-07,1050.6083364714718 +2002-12-14,963.5360587378967 +2002-12-21,930.876866470915 +2002-12-28,1280.348110508866 +2003-01-04,1181.514294941955 +2003-01-11,1614.0161450222497 +2003-01-18,1646.7390739233094 +2003-01-25,1242.0654230986447 +2003-02-01,1055.0193186234367 +2003-02-08,1340.8729764569691 +2003-02-15,1538.7346583448934 +2003-02-22,783.3683875210722 +2003-03-01,1290.429043802952 +2003-03-08,934.3895259174699 +2003-03-15,1309.7929183707427 +2003-03-22,1283.764689381839 +2003-03-29,867.63706059849 +2003-04-05,1596.6785335918817 +2003-04-12,1734.389094429127 +2003-04-19,1196.730142389165 +2003-04-26,1410.9175598103557 +2003-05-03,776.7877725892607 +2003-05-10,783.8471112395051 +2003-05-17,1254.048386453395 +2003-05-24,876.5477744574209 +2003-05-31,1385.2901731188144 +2003-06-07,814.7877434769633 +2003-06-14,1491.3263280031733 +2003-06-21,1505.0513062576683 +2003-06-28,1076.7821645382946 +2003-07-05,1186.9889296439774 +2003-07-12,1085.751657504938 +2003-07-19,1272.8431620674733 +2003-07-26,1603.2678713176442 +2003-08-02,1130.0147865950414 +2003-08-09,1475.2833077954228 +2003-08-16,1359.3971646574912 +2003-08-23,1212.2454123228429 +2003-08-30,1040.9618246953216 +2003-09-06,834.4200694129314 +2003-09-13,1551.402458274291 +2003-09-20,1144.781028543901 +2003-09-27,1664.5968778835672 +2003-10-04,1581.6507393982224 +2003-10-11,1297.3592456661365 +2003-10-18,1396.3971889894642 +2003-10-25,1714.2993536955257 +2003-11-01,1414.0918404273007 +2003-11-08,774.756963431199 +2003-11-15,1646.141954015616 +2003-11-22,1609.6660295323381 +2003-11-29,1536.076844009452 +2003-12-06,1679.03659173108 +2003-12-13,1414.6852950142797 +2003-12-20,875.5030265414908 +2003-12-27,1154.8905502775692 +2004-01-03,851.5375234341918 +2004-01-10,1093.3238370569643 +2004-01-17,1295.4543758390892 +2004-01-24,1330.274280724406 +2004-01-31,1184.1056813924288 +2004-02-07,1181.9848829237628 +2004-02-14,759.8723950667452 +2004-02-21,1177.9320811885343 +2004-02-28,1056.9912498803842 +2004-03-06,1420.6719116180361 +2004-03-13,1455.4524038595425 +2004-03-20,1521.2045745383446 +2004-03-27,1672.6542025351378 +2004-04-03,1544.43796362692 +2004-04-10,1666.2998458062411 +2004-04-17,797.7627126195014 +2004-04-24,950.1683843414871 +2004-05-01,1309.6805793506396 +2004-05-08,841.3538971069008 +2004-05-15,1442.6381312253604 +2004-05-22,824.299188771073 +2004-05-29,1113.2318993256101 +2004-06-05,1445.9652179621698 +2004-06-12,1441.1813286377594 +2004-06-19,811.0567673222149 +2004-06-26,1432.7013163498564 +2004-07-03,1340.3214752854017 +2004-07-10,833.894860122929 +2004-07-17,992.9854083364979 +2004-07-24,921.6556352908741 +2004-07-31,1718.336309933873 +2004-08-07,1216.7187246394876 +2004-08-14,1466.4437127373274 +2004-08-21,958.4706433728105 +2004-08-28,1083.3585290753133 +2004-09-04,923.4143026212363 +2004-09-11,1451.2563246450072 +2004-09-18,1618.252268005779 +2004-09-25,835.193864055298 +2004-10-02,991.6807197066241 +2004-10-09,1404.2838556214283 +2004-10-16,1725.6743306289811 +2004-10-23,847.943474430268 +2004-10-30,1025.946029140508 +2004-11-06,778.5389308214201 +2004-11-13,1251.4660746019838 +2004-11-20,1507.1147049136723 +2004-11-27,1581.303265924688 +2004-12-04,1652.369222158888 +2004-12-11,1524.3379612438328 +2004-12-18,1621.0951569050742 +2004-12-25,1413.4603751475638 +2005-01-01,1629.4084203815228 +2005-01-08,1204.8642631308226 +2005-01-15,983.0573211879524 +2005-01-22,1221.9929617265084 +2005-01-29,1412.9185311549113 +2005-02-05,1002.8598406359281 +2005-02-12,990.2050474207908 +2005-02-19,939.2254977675271 +2005-02-26,1105.2267483124742 +2005-03-05,1003.5570360655943 +2005-03-12,1697.0485938268175 +2005-03-19,1191.5894255022165 +2005-03-26,1487.5549703688744 +2005-04-02,1733.9522989383463 +2005-04-09,1747.9023640677087 +2005-04-16,906.0973821306466 +2005-04-23,1484.373724961524 +2005-04-30,1646.7319833268255 +2005-05-07,894.6732765086166 +2005-05-14,781.1297295943103 +2005-05-21,1271.0148136441385 +2005-05-28,767.9582843237154 +2005-06-04,1149.7391791254593 +2005-06-11,817.4968953684063 +2005-06-18,763.3956220100101 +2005-06-25,788.5991867109641 +2005-07-02,1691.411288682549 +2005-07-09,1423.9830197051392 +2005-07-16,1216.776157740237 +2005-07-23,1499.933607004157 +2005-07-30,823.7025923703237 +2005-08-06,833.9517075906887 +2005-08-13,864.2348000988172 +2005-08-20,1348.0387961411525 +2005-08-27,1275.4371418093535 +2005-09-03,1500.4539434041894 +2005-09-10,1356.550778186839 +2005-09-17,1271.4340946864638 +2005-09-24,849.8164545510286 +2005-10-01,950.1262384000569 +2005-10-08,1216.477134186988 +2005-10-15,1682.1296573148738 +2005-10-22,1166.34745610223 +2005-10-29,1095.9307394327036 +2005-11-05,1007.6723828937712 +2005-11-12,946.4997389171517 +2005-11-19,1073.082433279777 +2005-11-26,1287.4745349645257 +2005-12-03,998.05018646063 +2005-12-10,1498.1008345981022 +2005-12-17,781.7142946914705 +2005-12-24,825.3714138982322 +2005-12-31,1220.4037603393137 +2006-01-07,1178.4352283782193 +2006-01-14,1544.0501118001448 +2006-01-21,1422.740179126607 +2006-01-28,1659.2349753654476 +2006-02-04,1336.1620423726367 +2006-02-11,1013.8343267482733 +2006-02-18,949.1276410176631 +2006-02-25,1211.0709121693012 +2006-03-04,797.8640955941145 +2006-03-11,1058.3455194196413 +2006-03-18,1047.6749006377909 +2006-03-25,1034.609784014806 +2006-04-01,1069.6303190906715 +2006-04-08,1110.1773665922933 +2006-04-15,1348.9602866418213 +2006-04-22,873.6740993595793 +2006-04-29,1359.4393505458577 +2006-05-06,1451.986533419806 +2006-05-13,882.569973479631 +2006-05-20,1252.3131922372595 +2006-05-27,1153.1721570795055 +2006-06-03,1562.0815396400806 +2006-06-10,855.50138954541 +2006-06-17,1373.8964781506616 +2006-06-24,1011.9480484748875 +2006-07-01,1017.7696563282566 +2006-07-08,863.9636234592731 +2006-07-15,1102.536537897876 +2006-07-22,946.3116849045543 +2006-07-29,1543.649331745542 +2006-08-05,1670.873408725523 +2006-08-12,1630.0097823064002 +2006-08-19,1334.9740561200488 +2006-08-26,1132.601214013588 +2006-09-02,1538.621448828218 +2006-09-09,1547.0142477612228 +2006-09-16,897.2414095434681 +2006-09-23,1127.2343572863658 +2006-09-30,1235.0631237351163 +2006-10-07,964.6662216868339 +2006-10-14,884.0465567842842 +2006-10-21,837.5574050156071 +2006-10-28,1218.8634612928174 +2006-11-04,1189.3505625140153 +2006-11-11,772.3829505459363 +2006-11-18,1192.6984318057591 +2006-11-25,1536.4255421197902 +2006-12-02,1590.3525675467715 +2006-12-09,884.2098569763643 +2006-12-16,1190.0170484612554 +2006-12-23,815.2288815793256 +2006-12-30,1501.042018359812 +2007-01-06,956.2930080646083 +2007-01-13,1014.906420154718 +2007-01-20,1151.3869763012422 +2007-01-27,1151.7448947800783 +2007-02-03,1638.153381332501 +2007-02-10,1320.436469818081 +2007-02-17,750.3274087334378 +2007-02-24,987.397718462709 +2007-03-03,1660.2345286649975 +2007-03-10,1144.8350868454063 +2007-03-17,1087.048171823121 +2007-03-24,1128.668388587378 +2007-03-31,1062.8400725001595 +2007-04-07,880.4261171093095 +2007-04-14,1534.1979113964258 +2007-04-21,1193.9896561499154 +2007-04-28,1227.4426883126916 +2007-05-05,1625.4210643718939 +2007-05-12,1413.7491487791008 +2007-05-19,954.0716848984862 +2007-05-26,1717.4454650760697 +2007-06-02,1608.5078003663432 +2007-06-09,1051.6285994418479 +2007-06-16,1108.931004454288 +2007-06-23,1396.1914331934074 +2007-06-30,872.4426967451949 +2007-07-07,1505.7732185094717 +2007-07-14,1295.9887286241062 +2007-07-21,853.967264374924 +2007-07-28,1736.6589057408505 +2007-08-04,1169.330747886467 +2007-08-11,1085.3071052585217 +2007-08-18,1603.4668619584202 +2007-08-25,1004.1679132419379 +2007-09-01,1054.224948260884 +2007-09-08,1668.6691054990133 +2007-09-15,787.3026774370388 +2007-09-22,1130.8820937593414 +2007-09-29,1564.2221802774739 +2007-10-06,1629.231384057292 +2007-10-13,1490.4221322923875 +2007-10-20,1725.335574990801 +2007-10-27,1193.0837139232026 +2007-11-03,1326.0312196156563 +2007-11-10,1230.2324724744808 +2007-11-17,1340.1031536727482 +2007-11-24,1168.2920087277732 +2007-12-01,1331.4799043156747 +2007-12-08,1713.5486141583456 +2007-12-15,1517.8034948547167 +2007-12-22,1661.1817703486058 +2007-12-29,1102.8253850774254 +2008-01-05,1255.816162936513 +2008-01-12,1696.5013029237368 +2008-01-19,1425.875869718335 +2008-01-26,1483.082147001447 +2008-02-02,1411.9641163477095 +2008-02-09,1314.4918997130212 +2008-02-16,1671.8463622844604 +2008-02-23,1269.0162138381052 +2008-03-01,1531.331584763381 +2008-03-08,1249.4885052554828 +2008-03-15,1232.576276613727 +2008-03-22,1171.7529192200402 +2008-03-29,1408.19468227152 +2008-04-05,782.8616982309195 +2008-04-12,1274.398862610544 +2008-04-19,814.8182804405658 +2008-04-26,891.7779464935136 +2008-05-03,1354.544668471952 +2008-05-10,918.8738549796237 +2008-05-17,866.6767250258526 +2008-05-24,1181.3826259030975 +2008-05-31,770.9660791795603 +2008-06-07,1553.177515375414 +2008-06-14,1321.060457254766 +2008-06-21,1560.3198299236838 +2008-06-28,1674.0518622331101 +2008-07-05,987.0718061937412 +2008-07-12,1438.8018220241831 +2008-07-19,1363.81496630051 +2008-07-26,1710.453440990731 +2008-08-02,1168.21384025608 +2008-08-09,1073.5924279311614 +2008-08-16,1329.3148064128072 +2008-08-23,1324.9270325404475 +2008-08-30,1370.3071657815844 +2008-09-06,985.8473597362364 +2008-09-13,914.6096942185973 +2008-09-20,855.7073582488954 +2008-09-27,1679.2510140941147 +2008-10-04,1430.398304372975 +2008-10-11,1099.0056665627005 +2008-10-18,1716.2428041348082 +2008-10-25,1347.908744014794 +2008-11-01,1668.4929825132317 +2008-11-08,1581.2852263767213 +2008-11-15,759.6183351154345 +2008-11-22,840.1656273899035 +2008-11-29,1018.5774652398509 +2008-12-06,1417.1651923618258 +2008-12-13,893.9722014065225 +2008-12-20,971.4854516693802 +2008-12-27,1030.071205183661 +2009-01-03,1088.1235056514186 +2009-01-10,764.2233324671483 +2009-01-17,825.1937792856644 +2009-01-24,1245.7034145261905 +2009-01-31,859.9374429992893 +2009-02-07,1398.0269215835515 +2009-02-14,775.4668546018363 +2009-02-21,974.4175909507514 +2009-02-28,1004.1287630482789 +2009-03-07,1222.1541516028644 +2009-03-14,848.6931579221873 +2009-03-21,1225.8665806541055 +2009-03-28,956.8489930431764 +2009-04-04,1245.323693422998 +2009-04-11,1402.6002656129508 +2009-04-18,1376.8535656684237 +2009-04-25,828.4796347963902 +2009-05-02,1499.999832950313 +2009-05-09,945.2857212492095 +2009-05-16,1369.3765789636466 +2009-05-23,750.4763915928894 +2009-05-30,1227.2864580053672 +2009-06-06,1692.3122484623755 +2009-06-13,966.5365183971076 +2009-06-20,752.0040488861669 +2009-06-27,1437.8944894824833 +2009-07-04,1220.7185982206647 +2009-07-11,1464.6963294034156 +2009-07-18,763.7585339034273 +2009-07-25,1250.58113625976 +2009-08-01,1083.4394255279708 +2009-08-08,999.6711516891338 +2009-08-15,1228.5761613947698 +2009-08-22,754.2353362352528 +2009-08-29,823.7829978149231 +2009-09-05,1288.1840962874955 +2009-09-12,987.35270232064 +2009-09-19,777.0916561561602 +2009-09-26,1252.7169534347688 +2009-10-03,1395.5505039812629 +2009-10-10,1066.0835524216548 +2009-10-17,1594.9270148158935 +2009-10-24,1549.5558279700927 +2009-10-31,1671.229851699247 +2009-11-07,909.053537892886 +2009-11-14,1109.121910275802 +2009-11-21,1156.2903338738026 +2009-11-28,1592.3668066249586 +2009-12-05,1304.8333434610722 +2009-12-12,1723.978280346211 +2009-12-19,1645.8014931307105 +2009-12-26,1321.5777647827435 +2010-01-02,809.9024381690214 +2010-01-09,872.4070160447716 +2010-01-16,799.7389174745708 +2010-01-23,1677.4216862320768 +2010-01-30,1002.5434590311418 +2010-02-06,1586.7816986036796 +2010-02-13,1232.5919188412092 +2010-02-20,1303.1990931274456 +2010-02-27,1336.1681493968583 +2010-03-06,1691.576690748299 +2010-03-13,1290.202809764872 +2010-03-20,1520.4696614469499 +2010-03-27,1421.1110943425651 +2010-04-03,1513.465053721721 +2010-04-10,1295.2456725891195 +2010-04-17,1614.6789378716157 +2010-04-24,1124.6224249107522 +2010-05-01,1338.6521153868784 +2010-05-08,1725.457812107551 +2010-05-15,1501.5334416260614 +2010-05-22,1444.7324973232594 +2010-05-29,1675.5604038651395 +2010-06-05,1127.671962516103 +2010-06-12,1494.9826163894054 +2010-06-19,1420.7679358688451 +2010-06-26,816.3051967680841 +2010-07-03,1094.3557643052904 +2010-07-10,813.011681770016 +2010-07-17,1406.5578526638144 +2010-07-24,1726.8825339971538 +2010-07-31,1555.2910589327655 +2010-08-07,888.1852207378043 +2010-08-14,886.3022373458475 +2010-08-21,956.2276421417486 +2010-08-28,945.8608348777102 +2010-09-04,1406.9852461979597 +2010-09-11,930.4314603244692 +2010-09-18,1448.0050159327914 +2010-09-25,845.2593591389556 +2010-10-02,1619.8813986116 +2010-10-09,1123.0669013462214 +2010-10-16,768.9377692052751 +2010-10-23,1480.8701141094768 +2010-10-30,1352.6213473096961 +2010-11-06,1137.143531963999 +2010-11-13,1205.091451195519 +2010-11-20,1738.8255874542758 +2010-11-27,780.9683245610822 +2010-12-04,1614.7579067819177 +2010-12-11,1718.8115146645955 +2010-12-18,1642.9120580059614 +2010-12-25,1211.7891400530914 +2011-01-01,1616.9326546121506 +2011-01-08,1050.4597218283345 +2011-01-15,1539.0578436051069 +2011-01-22,790.1104805065779 +2011-01-29,797.139841127373 +2011-02-05,1432.2893602872593 +2011-02-12,1511.4041434930182 +2011-02-19,873.1100677477281 +2011-02-26,1086.7513250616998 +2011-03-05,1728.4590081928998 +2011-03-12,860.2397542156399 +2011-03-19,1039.4013222146227 +2011-03-26,951.0145826782374 +2011-04-02,1073.1097826230562 +2011-04-09,803.392676998686 +2011-04-16,1043.3888166019485 +2011-04-23,1182.0303831560109 +2011-04-30,1083.8576643610415 +2011-05-07,1522.8417572048918 +2011-05-14,807.8027208882942 +2011-05-21,1593.0261058810374 +2011-05-28,1440.6632071881088 +2011-06-04,1581.2003888123343 +2011-06-11,1680.5163821250314 +2011-06-18,1412.2090647388943 +2011-06-25,1430.1532968202446 +2011-07-02,1145.1054508728464 +2011-07-09,1333.5021714527168 +2011-07-16,1653.3245058392833 +2011-07-23,1494.5372835777525 +2011-07-30,959.5431014120387 +2011-08-06,1164.3520442583979 +2011-08-13,1179.2588754937933 +2011-08-20,1325.0183399741313 +2011-08-27,1044.0116408833765 +2011-09-03,1583.245680087002 +2011-09-10,1101.483542896341 +2011-09-17,1261.0059065457965 +2011-09-24,1161.4081833402752 +2011-10-01,1180.1733788749034 +2011-10-08,1631.7542677244262 +2011-10-15,819.0120782827114 +2011-10-22,1336.1861820247486 +2011-10-29,858.9000817716616 +2011-11-05,1598.3749576185805 +2011-11-12,1292.918891387679 +2011-11-19,967.5719226637095 +2011-11-26,1460.2604358360888 +2011-12-03,846.0143317393396 +2011-12-10,1718.9979058616805 +2011-12-17,914.4414925590737 +2011-12-24,1439.2046240682255 +2011-12-31,905.1478363954778 +2012-01-07,1160.6639899797408 +2012-01-14,1102.9260921013984 +2012-01-21,1351.1881681632817 +2012-01-28,777.9232081931387 +2012-02-04,1649.7440171765704 +2012-02-11,1094.5406534983372 +2012-02-18,1342.893250521469 +2012-02-25,1146.9699365533427 +2012-03-03,1174.1567073633773 +2012-03-10,1030.222496814348 +2012-03-17,978.3584248408638 +2012-03-24,1285.9694433826876 +2012-03-31,1431.9462383809766 +2012-04-07,1728.3772787289133 +2012-04-14,1122.5302544234883 +2012-04-21,1071.0003958306818 +2012-04-28,1394.3215346342113 +2012-05-05,1169.074895765347 +2012-05-12,1308.6983979789952 +2012-05-19,1360.1368008784457 +2012-05-26,1632.8623015879855 +2012-06-02,1396.2401949854088 +2012-06-09,1060.5663365891367 +2012-06-16,1139.6315448049497 +2012-06-23,1235.798981143232 +2012-06-30,971.9836205642396 +2012-07-07,1608.1658418587908 +2012-07-14,815.598688863363 +2012-07-21,1095.610091636322 +2012-07-28,1051.0608881536962 +2012-08-04,1142.064174257824 +2012-08-11,1613.1103188458535 +2012-08-18,986.3544788688844 +2012-08-25,1672.770411263358 +2012-09-01,1178.6548456000435 +2012-09-08,952.2228721171703 +2012-09-15,1544.7530902142876 +2012-09-22,1201.337640295598 +2012-09-29,1320.7539543611574 +2012-10-06,833.2232285964909 +2012-10-13,1310.8265526051816 +2012-10-20,1494.772824601311 +2012-10-27,1118.7721785507522 +2012-11-03,1722.1752695020425 +2012-11-10,754.2158250324771 +2012-11-17,1356.9575741108008 +2012-11-24,1025.429869337083 +2012-12-01,1359.567106572017 +2012-12-08,1495.2605414551192 +2012-12-15,944.2556140094377 +2012-12-22,1039.6523300448782 +2012-12-29,1229.1102514344861 +2013-01-05,1455.3196157969426 +2013-01-12,1574.7693522444238 +2013-01-19,1434.5670386366069 +2013-01-26,1089.8029259101127 +2013-02-02,1268.5900116409844 +2013-02-09,895.8923626078868 +2013-02-16,1084.3217134115496 +2013-02-23,803.7314357904795 +2013-03-02,1272.913901039048 +2013-03-09,1132.383498570144 +2013-03-16,1508.221489332182 +2013-03-23,1108.6193184601223 +2013-03-30,1084.0006691512874 +2013-04-06,1496.0072953307529 +2013-04-13,1169.142795747005 +2013-04-20,1239.1784035473677 +2013-04-27,1627.7793931721858 +2013-05-04,1143.6990059308125 +2013-05-11,1412.7937191392712 +2013-05-18,1513.5613497315562 +2013-05-25,1385.7108222251813 +2013-06-01,1583.497848032268 +2013-06-08,1463.2721127694142 +2013-06-15,1572.0862391590842 +2013-06-22,1194.8939755555532 +2013-06-29,763.7724685315139 +2013-07-06,1714.761197917542 +2013-07-13,1541.2283829800595 +2013-07-20,950.238121131765 +2013-07-27,1463.1484493346586 +2013-08-03,1521.3044725322025 +2013-08-10,754.6617665756901 +2013-08-17,953.4258304981189 +2013-08-24,1568.4593798375333 +2013-08-31,1576.4521696497345 +2013-09-07,1100.2769942270695 +2013-09-14,1465.6895702002712 +2013-09-21,759.4318705925598 +2013-09-28,1419.9694294353708 +2013-10-05,1247.2702889679497 +2013-10-12,1386.8529465028864 +2013-10-19,962.2314662806084 +2013-10-26,1728.3129789605325 +2013-11-02,959.6993313877699 +2013-11-09,1127.2659837157914 +2013-11-16,1513.12398091628 +2013-11-23,1113.7399900084715 +2013-11-30,803.508396700901 +2013-12-07,808.3120614701659 +2013-12-14,1599.0431336949953 +2013-12-21,1019.564050588274 +2013-12-28,813.8952299311662 +2014-01-04,1486.4150357604765 +2014-01-11,1334.9136588263618 +2014-01-18,1673.9197519684672 +2014-01-25,964.0972286513404 +2014-02-01,1325.103699446773 +2014-02-08,1587.8350598995899 +2014-02-15,1242.2400598296335 +2014-02-22,1028.1764821926129 +2014-03-01,785.8236782300402 +2014-03-08,752.0228813514295 +2014-03-15,1716.7882212080287 +2014-03-22,1004.6597716451475 +2014-03-29,1194.945515153702 +2014-04-05,902.3708532241985 +2014-04-12,1539.506700759723 +2014-04-19,1470.2389521711793 +2014-04-26,857.7574574919821 +2014-05-03,1399.5503854067015 +2014-05-10,1463.8560823855453 +2014-05-17,1023.064596137621 +2014-05-24,1524.4435713545554 +2014-05-31,1419.7140882900308 +2014-06-07,836.9045693546888 +2014-06-14,1712.8763088653238 +2014-06-21,1128.094075108055 +2014-06-28,1400.4011092959865 +2014-07-05,1600.8611651183764 +2014-07-12,825.4667413276213 +2014-07-19,1330.711316606729 +2014-07-26,1311.973715867362 +2014-08-02,1656.5678065705733 +2014-08-09,1418.228104206746 +2014-08-16,1558.3148147268093 +2014-08-23,1323.195280090648 +2014-08-30,1113.2350869845477 +2014-09-06,1717.1772651551626 +2014-09-13,988.0125852948925 +2014-09-20,1159.5496189749554 +2014-09-27,1626.718561817921 +2014-10-04,1348.6575591510714 +2014-10-11,1406.7449713925685 +2014-10-18,1598.6246379660677 +2014-10-25,1597.2181000310277 +2014-11-01,1101.2115488503518 +2014-11-08,1443.283137093798 +2014-11-15,917.9496282021184 +2014-11-22,1245.6668975850919 +2014-11-29,1694.7063185754332 +2014-12-06,1422.5721771748638 +2014-12-13,1590.7372051250147 +2014-12-20,840.4693504222934 +2014-12-27,1083.2693256586128 +2015-01-03,1686.5801831336646 +2015-01-10,901.1031376514372 +2015-01-17,1632.8947666435845 +2015-01-24,1433.1481313369109 +2015-01-31,1303.3402382546262 +2015-02-07,1725.5001248255207 +2015-02-14,1015.2626355437968 +2015-02-21,1431.1618124287193 +2015-02-28,1285.1200124183424 +2015-03-07,1095.8575140247278 +2015-03-14,1516.0426868831673 +2015-03-21,1683.2628165115616 +2015-03-28,1547.8407336049734 +2015-04-04,1288.6481274718387 +2015-04-11,1664.7562608100857 +2015-04-18,829.4135979206262 +2015-04-25,1700.6562384278343 +2015-05-02,1485.2322992665731 +2015-05-09,1336.643412683144 +2015-05-16,951.0166045234878 +2015-05-23,1737.439697451557 +2015-05-30,871.7026709447956 +2015-06-06,1114.2377488327186 +2015-06-13,772.9646666395033 +2015-06-20,1342.94230719477 +2015-06-27,990.8698790997822 +2015-07-04,877.2304464650023 +2015-07-11,1005.3599432526789 +2015-07-18,930.4080300942011 +2015-07-25,1381.55142085675 +2015-08-01,1028.4167390855462 +2015-08-08,1034.303403232975 +2015-08-15,1133.2529013126198 +2015-08-22,1112.280023487589 +2015-08-29,1537.1920385445908 +2015-09-05,1326.2990556783718 +2015-09-12,1529.207917721573 +2015-09-19,1305.8383762113422 +2015-09-26,1421.1863513296944 +2015-10-03,1739.468646208456 +2015-10-10,1225.2274740865428 +2015-10-17,1310.8024713189277 +2015-10-24,1071.9498731449412 +2015-10-31,1009.8833863867478 +2015-11-07,1397.5797626904666 +2015-11-14,969.2700933134129 +2015-11-21,1028.2953075181633 +2015-11-28,1538.7655903149562 +2015-12-05,1664.5776114379178 +2015-12-12,1002.5930866351267 +2015-12-19,759.5314155984837 +2015-12-26,1129.8472116111777 +2016-01-02,1157.3941542432583 +2016-01-09,829.9989615242675 +2016-01-16,1119.302915915977 +2016-01-23,856.1979621504931 +2016-01-30,1703.5295403885675 +2016-02-06,1185.3669444629963 +2016-02-13,945.9475194097781 +2016-02-20,1619.6864953059285 +2016-02-27,1283.923796930742 +2016-03-05,1393.6620086601556 +2016-03-12,1380.2421342617984 +2016-03-19,977.7784985661879 +2016-03-26,968.6128209126246 +2016-04-02,963.61677249488 +2016-04-09,1177.5347353518737 +2016-04-16,1134.3794864842962 +2016-04-23,1017.9930324957706 +2016-04-30,1023.1338717403173 +2016-05-07,1685.6514200494282 +2016-05-14,1683.0760620881795 +2016-05-21,1047.5594118951176 +2016-05-28,1367.3122084965385 +2016-06-04,1285.2618030395527 +2016-06-11,810.2218817738603 +2016-06-18,1135.8769313408022 +2016-06-25,1039.25167212788 +2016-07-02,955.6637094612024 +2016-07-09,960.3072208745673 +2016-07-16,1313.688510291497 +2016-07-23,1516.5175457593346 +2016-07-30,791.6410494806222 +2016-08-06,931.6031029495668 +2016-08-13,1409.7826338206135 +2016-08-20,1038.8034403680003 +2016-08-27,1472.0545049552572 +2016-09-03,1068.1598398892972 +2016-09-10,764.1653123417515 +2016-09-17,1159.4348288314811 +2016-09-24,991.3820769963971 +2016-10-01,1142.32794182207 +2016-10-08,1139.290182161584 +2016-10-15,970.3179804057803 +2016-10-22,1344.3450929510052 +2016-10-29,1124.8286153104964 +2016-11-05,1470.6589194650612 +2016-11-12,772.7512111617692 +2016-11-19,934.8303032028044 +2016-11-26,1185.3048752303255 +2016-12-03,1699.15026937633 +2016-12-10,1653.023930506062 +2016-12-17,1718.2464144968255 +2016-12-24,829.1334761967275 +2016-12-31,852.614929180667 +2017-01-07,1522.3490202937867 +2017-01-14,1564.0658063044932 +2017-01-21,1281.210390161314 +2017-01-28,1744.3455625157926 +2017-02-04,939.8212389584376 +2017-02-11,967.9389888548462 +2017-02-18,1160.1721509494944 +2017-02-25,960.9762892781657 +2017-03-04,1331.0726645915731 +2017-03-11,1462.8937420814218 +2017-03-18,1749.4934879003886 +2017-03-25,944.3377611386281 +2017-04-01,1509.7634586355696 +2017-04-08,1511.2854640963787 +2017-04-15,1296.690006620663 +2017-04-22,1712.8263914827571 +2017-04-29,825.1566368884531 +2017-05-06,801.849836058553 +2017-05-13,1173.3512790846592 +2017-05-20,1148.601309946792 +2017-05-27,834.0580044176896 +2017-06-03,936.0649105991135 +2017-06-10,1292.5570319737958 +2017-06-17,1384.8199962080025 +2017-06-24,1328.648685108052 +2017-07-01,795.2572531847113 +2017-07-08,785.8859370498903 +2017-07-15,906.7088497445602 +2017-07-22,812.9416614241464 +2017-07-29,1747.6175394938691 +2017-08-05,764.8506853931299 +2017-08-12,1644.7445331094482 +2017-08-19,1657.3100617879982 +2017-08-26,1297.3598730308668 +2017-09-02,1484.498547005107 +2017-09-09,925.479328783924 +2017-09-16,991.4814694858478 +2017-09-23,1485.1276101815606 +2017-09-30,1721.1815865969381 +2017-10-07,1459.219883601157 +2017-10-14,1734.4610394259746 +2017-10-21,883.944737196043 +2017-10-28,1716.0276883026372 +2017-11-04,1489.1323839189101 +2017-11-11,962.5228945695287 +2017-11-18,843.3858862868126 +2017-11-25,1694.4490611162669 +2017-12-02,1650.3535650630859 +2017-12-09,900.5366271252002 +2017-12-16,814.6657389705449 +2017-12-23,1425.8573666653356 +2017-12-30,1411.2619677639034 +2018-01-06,1010.743870519935 +2018-01-13,1727.6993529840304 +2018-01-20,1257.7797298778949 +2018-01-27,1447.620623988803 +2018-02-03,1630.5762497678923 +2018-02-10,1039.6913569575588 +2018-02-17,815.6441170704983 +2018-02-24,1673.5602683678574 +2018-03-03,944.9054517921261 +2018-03-10,1177.6474740514598 +2018-03-17,1252.7086576078177 +2018-03-24,1458.3294349718622 +2018-03-31,1383.3151056586544 +2018-04-07,761.8239239351745 +2018-04-14,1477.527223407671 +2018-04-21,1747.2291829880064 +2018-04-28,1296.6558384665082 +2018-05-05,1535.0993052366832 +2018-05-12,1443.150342787413 +2018-05-19,1150.8684369213925 +2018-05-26,908.9017125639001 +2018-06-02,1239.5026417535992 +2018-06-09,778.6444893142669 +2018-06-16,815.4201084011187 +2018-06-23,1334.8801386663467 +2018-06-30,1592.2953593578638 +2018-07-07,1115.9605248712392 +2018-07-14,1244.6671200792525 +2018-07-21,1155.3883959296493 +2018-07-28,1150.743176543863 +2018-08-04,1385.1101249652668 +2018-08-11,961.5597653596222 +2018-08-18,1426.0712522437375 +2018-08-25,1194.348697728382 +2018-09-01,1187.1935689218903 +2018-09-08,1480.1392191736188 +2018-09-15,1395.7303421497547 +2018-09-22,1269.3988508638347 +2018-09-29,1277.549104141215 +2018-10-06,1660.670114672905 +2018-10-13,1314.9923586833231 +2018-10-20,1239.438384947896 +2018-10-27,1702.050195219614 +2018-11-03,1207.222646614264 +2018-11-10,903.0133979589002 +2018-11-17,1068.8499441380438 +2018-11-24,1114.7568360637863 +2018-12-01,1094.028490088617 +2018-12-08,1314.6602108192103 +2018-12-15,1728.6810518164978 +2018-12-22,984.477674986324 +2018-12-29,1295.8053895972084 +2019-01-05,753.3010460959914 +2019-01-12,1487.6696317733954 +2019-01-19,1534.2115400803355 +2019-01-26,1645.5473378227352 +2019-02-02,1182.9049696977359 +2019-02-09,787.9668135974753 +2019-02-16,835.661874336671 +2019-02-23,1291.9083514177455 diff --git a/tests/samples/rw-50.csv b/tests/samples/rw-50.csv new file mode 100644 index 0000000..ed2b362 --- /dev/null +++ b/tests/samples/rw-50.csv @@ -0,0 +1,51 @@ +2000-01-01,-1000000.0 +2000-01-01,20013.762767996534 +2000-01-31,22627.142853733552 +2000-03-01,21913.842208046477 +2000-03-31,28551.419495848317 +2000-04-30,19508.64312770872 +2000-05-30,24018.508012029757 +2000-06-29,24703.196702143276 +2000-07-29,16350.81225543668 +2000-08-28,25369.483686095657 +2000-09-27,24090.660535131305 +2000-10-27,15079.15134693606 +2000-11-26,27241.963510804293 +2000-12-26,30602.792879389785 +2001-01-25,32405.738249846454 +2001-02-24,16199.337003723545 +2001-03-26,16843.52425324068 +2001-04-25,19415.85805136018 +2001-05-25,29658.82772067889 +2001-06-24,30080.627353209547 +2001-07-24,20217.67685581632 +2001-08-23,29394.443032110572 +2001-09-22,26093.583426970967 +2001-10-22,20942.237132321323 +2001-11-21,32096.997928524153 +2001-12-21,16771.82267158162 +2002-01-20,27451.535464227807 +2002-02-19,22240.671748900044 +2002-03-21,19693.20889017347 +2002-04-20,15656.644171908643 +2002-05-20,29140.80993974786 +2002-06-19,33719.224409649316 +2002-07-19,24093.858627480684 +2002-08-18,31418.394007668012 +2002-09-17,34369.59753185898 +2002-10-17,22454.37408450286 +2002-11-16,34298.04139895853 +2002-12-16,31127.311743382554 +2003-01-15,29771.166236615736 +2003-02-14,23714.6047053632 +2003-03-16,29201.63326709254 +2003-04-15,33590.97562618985 +2003-05-15,34885.21721090955 +2003-06-14,21172.971845923967 +2003-07-14,34398.16572113883 +2003-08-13,33271.988707028024 +2003-09-12,34491.42469951532 +2003-10-12,25499.11783914676 +2003-11-11,20585.927728707844 +2003-12-11,30744.79592974533 +2004-01-10,20570.335028059013 diff --git a/tests/samples/rw-500.csv b/tests/samples/rw-500.csv new file mode 100644 index 0000000..9061652 --- /dev/null +++ b/tests/samples/rw-500.csv @@ -0,0 +1,501 @@ +2000-01-01,-1000000.0 +2000-01-01,2308.3490720342443 +2000-01-15,2295.1983320164572 +2000-01-29,2762.3536514096545 +2000-02-12,3466.6458984588926 +2000-02-26,2412.8718927363407 +2000-03-11,3327.395200170619 +2000-03-25,1525.3649219983338 +2000-04-08,1611.3511401231153 +2000-04-22,2192.291146513879 +2000-05-06,1842.174983522628 +2000-05-20,3216.6263451469217 +2000-06-03,1658.431450340813 +2000-06-17,2747.87603673218 +2000-07-01,2125.764617784637 +2000-07-15,1883.4609985203408 +2000-07-29,2205.2479665717665 +2000-08-12,1793.7058885987947 +2000-08-26,2931.5876388343395 +2000-09-09,3218.338367131453 +2000-09-23,1919.4711211149759 +2000-10-07,2541.88659953046 +2000-10-21,2526.0062293214382 +2000-11-04,1795.386855462258 +2000-11-18,2670.3839424301536 +2000-12-02,1608.559472648217 +2000-12-16,2647.4976837518234 +2000-12-30,2468.27886269126 +2001-01-13,1772.984551428408 +2001-01-27,1755.7648251721996 +2001-02-10,2391.676336256735 +2001-02-24,3296.6279790615963 +2001-03-10,3467.2896943286596 +2001-03-24,2349.427782148913 +2001-04-07,2706.382301560012 +2001-04-21,2060.9796585764607 +2001-05-05,2969.5324103222583 +2001-05-19,1988.5832185168317 +2001-06-02,1662.1926896121872 +2001-06-16,2386.4562743084443 +2001-06-30,1601.3227782860793 +2001-07-14,2925.02177430504 +2001-07-28,3205.2095351941266 +2001-08-11,2516.2030631145376 +2001-08-25,1894.6756115708724 +2001-09-08,3192.023272650253 +2001-09-22,1787.7241231005062 +2001-10-06,3392.0837572932605 +2001-10-20,2447.4017883128395 +2001-11-03,2454.048378833881 +2001-11-17,3205.0810700129314 +2001-12-01,2967.525803029144 +2001-12-15,2652.5412072822487 +2001-12-29,2192.721665929609 +2002-01-12,1861.067843371473 +2002-01-26,1538.179426146715 +2002-02-09,2242.990068578637 +2002-02-23,2063.662217193919 +2002-03-09,1749.8261987721462 +2002-03-23,3041.9300311460725 +2002-04-06,2621.509904219373 +2002-04-20,1915.825196722074 +2002-05-04,2534.7318311178738 +2002-05-18,2727.375474191472 +2002-06-01,2592.098237983399 +2002-06-15,1679.7653989807945 +2002-06-29,2692.959848229075 +2002-07-13,2561.9207205443004 +2002-07-27,2695.5645704149456 +2002-08-10,2565.5341842355588 +2002-08-24,2218.2091449615805 +2002-09-07,3411.6910442687267 +2002-09-21,2176.0507301898124 +2002-10-05,2612.3315978460564 +2002-10-19,2137.2998044319015 +2002-11-02,3032.6731890960427 +2002-11-16,2552.0352510529437 +2002-11-30,2391.3783833467664 +2002-12-14,2127.515295114886 +2002-12-28,2900.727504709449 +2003-01-11,2212.8167135432745 +2003-01-25,3278.958629475671 +2003-02-08,1572.6671749327343 +2003-02-22,1610.635904251935 +2003-03-08,2238.4940549464873 +2003-03-22,2815.920312126714 +2003-04-05,2561.0570959681168 +2003-04-19,3447.7431998023853 +2003-05-03,2934.1956244912058 +2003-05-17,3354.3628393124854 +2003-05-31,1895.5862652345636 +2003-06-14,3490.842630514358 +2003-06-28,3483.795691347206 +2003-07-12,1970.1530546227204 +2003-07-26,3094.883622990686 +2003-08-09,1870.2133276456598 +2003-08-23,2965.583568527225 +2003-09-06,3118.565208892972 +2003-09-20,1547.1430112551695 +2003-10-04,2677.3753047951354 +2003-10-18,3138.9097199992993 +2003-11-01,2718.520145315669 +2003-11-15,2050.4864413594896 +2003-11-29,1538.1472084913748 +2003-12-13,3321.888284729375 +2003-12-27,3061.6875524050783 +2004-01-10,1723.3579026927528 +2004-01-24,3282.161497015589 +2004-02-07,1998.8794121011388 +2004-02-21,1733.2700342942746 +2004-03-06,2351.0822532226816 +2004-03-20,2786.1840938414 +2004-04-03,2440.2483607276463 +2004-04-17,2830.609158605342 +2004-05-01,3004.252857813853 +2004-05-15,1814.212075461859 +2004-05-29,3357.443218959727 +2004-06-12,2106.8312132495557 +2004-06-26,3334.209971875245 +2004-07-10,1691.5462543779943 +2004-07-24,2107.4733619348244 +2004-08-07,1575.2662477481122 +2004-08-21,1907.4059833081071 +2004-09-04,3122.142631981032 +2004-09-18,1503.3935243483938 +2004-10-02,1565.0398498449622 +2004-10-16,2425.4668176310706 +2004-10-30,2292.5250660892243 +2004-11-13,1736.045130594505 +2004-11-27,2766.636441417222 +2004-12-11,2296.8694316482856 +2004-12-25,2052.4923732724565 +2005-01-08,2788.4561820400695 +2005-01-22,2456.5466903861666 +2005-02-05,3486.932045959988 +2005-02-19,2117.1604989334974 +2005-03-05,3390.8829238586345 +2005-03-19,3177.832326533483 +2005-04-02,3426.8011422762975 +2005-04-16,3416.8047984399136 +2005-04-30,1648.6613351783792 +2005-05-14,3252.0146738037256 +2005-05-28,3201.6394878583183 +2005-06-11,3280.7195411440607 +2005-06-25,3330.743988678406 +2005-07-09,2984.1379844283674 +2005-07-23,2518.816304358617 +2005-08-06,3016.0200649283765 +2005-08-20,2898.7755296777923 +2005-09-03,2583.8172855802845 +2005-09-17,2065.4793118276098 +2005-10-01,1971.8131232230835 +2005-10-15,3116.0487956051343 +2005-10-29,2499.506796820456 +2005-11-12,1552.626236794291 +2005-11-26,2802.9492372185487 +2005-12-10,1521.8657996128065 +2005-12-24,1905.1886812343243 +2006-01-07,2557.4674650419315 +2006-01-21,1715.268786564134 +2006-02-04,2856.3885739202615 +2006-02-18,3063.783661530326 +2006-03-04,1999.9818985858622 +2006-03-18,3126.6927344965643 +2006-04-01,3167.0714174913414 +2006-04-15,2008.3440462079843 +2006-04-29,2730.1745996886707 +2006-05-13,1699.0838733837745 +2006-05-27,2104.676405676076 +2006-06-10,2984.0450816404395 +2006-06-24,3459.9452983826673 +2006-07-08,2209.2699840527457 +2006-07-22,3243.9160684860594 +2006-08-05,2618.374211802682 +2006-08-19,3214.3700235358956 +2006-09-02,2290.1365765916007 +2006-09-16,3461.195229931952 +2006-09-30,2311.8828524054356 +2006-10-14,2240.177751890622 +2006-10-28,2913.1754721257244 +2006-11-11,2518.877190140595 +2006-11-25,1938.7969742790242 +2006-12-09,2193.0690136884864 +2006-12-23,3228.1491124509384 +2007-01-06,1912.0864453703493 +2007-01-20,2556.637216215879 +2007-02-03,2777.003805625202 +2007-02-17,2523.2796268600605 +2007-03-03,1535.4933881198115 +2007-03-17,3375.5877587822897 +2007-03-31,3024.6924899451546 +2007-04-14,3272.3815337374535 +2007-04-28,3440.9072627935766 +2007-05-12,1773.3831546415383 +2007-05-26,2563.792439478058 +2007-06-09,2397.3722048023246 +2007-06-23,3012.6716559554598 +2007-07-07,3221.8525939836854 +2007-07-21,1710.7820427614197 +2007-08-04,2633.1021229475996 +2007-08-18,3205.651297874231 +2007-09-01,3406.3301631596214 +2007-09-15,2503.421591240587 +2007-09-29,2230.5400563732887 +2007-10-13,1762.5609694381355 +2007-10-27,2065.897801559177 +2007-11-10,1625.035050496629 +2007-11-24,1898.3652539748066 +2007-12-08,2889.177761464546 +2007-12-22,1993.5675697643162 +2008-01-05,1600.6524275484262 +2008-01-19,2583.395393047403 +2008-02-02,3445.691493716712 +2008-02-16,3063.110047014754 +2008-03-01,2966.3593596367273 +2008-03-15,2763.1835942548773 +2008-03-29,1579.8185157598114 +2008-04-12,2342.548875817676 +2008-04-26,2308.551509765257 +2008-05-10,2806.951473855517 +2008-05-24,2846.5977950966862 +2008-06-07,1690.5544256513272 +2008-06-21,2195.4852320870223 +2008-07-05,2330.1571012033564 +2008-07-19,2682.6507431429995 +2008-08-02,2316.900999966838 +2008-08-16,2064.3019317772664 +2008-08-30,2739.641467044197 +2008-09-13,2372.8436134819085 +2008-09-27,2622.6371933762935 +2008-10-11,2406.2259522652434 +2008-10-25,1928.9810857249797 +2008-11-08,2835.070914112972 +2008-11-22,1716.2575832630193 +2008-12-06,2966.5271294291397 +2008-12-20,2434.837954914229 +2009-01-03,2204.8870848986267 +2009-01-17,1774.2329773118631 +2009-01-31,2075.9643715031934 +2009-02-14,2001.636637630228 +2009-02-28,3115.287661579484 +2009-03-14,2122.3514496089874 +2009-03-28,2653.4362416522818 +2009-04-11,2856.7108135185426 +2009-04-25,2293.8635224016766 +2009-05-09,1530.9881170092715 +2009-05-23,2552.5415844974527 +2009-06-06,3426.7323316455763 +2009-06-20,3484.739219567308 +2009-07-04,3268.8880623794544 +2009-07-18,1967.5176635610192 +2009-08-01,2642.5535796377158 +2009-08-15,2559.5219991280132 +2009-08-29,2824.84964335978 +2009-09-12,2503.7772466250194 +2009-09-26,3186.020532462023 +2009-10-10,1624.7634868251398 +2009-10-24,1508.3520674003953 +2009-11-07,2978.479207641552 +2009-11-21,2038.921083575751 +2009-12-05,2403.7238370991845 +2009-12-19,3383.720698274797 +2010-01-02,2338.95645077929 +2010-01-16,3440.3753271188516 +2010-01-30,1765.0125975548935 +2010-02-13,1790.9417984854656 +2010-02-27,2687.608888907672 +2010-03-13,2318.5680284738582 +2010-03-27,1925.2687730479588 +2010-04-10,2396.2602797786594 +2010-04-24,2890.942939477263 +2010-05-08,3314.3208643232174 +2010-05-22,1986.3877854359023 +2010-06-05,2990.2291347204846 +2010-06-19,3159.7181609482586 +2010-07-03,3348.844043966908 +2010-07-17,2863.058211798916 +2010-07-31,2511.977876011408 +2010-08-14,3366.540598445341 +2010-08-28,1573.8024954416314 +2010-09-11,2616.254533485624 +2010-09-25,3110.29179399305 +2010-10-09,1937.7747010622213 +2010-10-23,3471.8214586806357 +2010-11-06,2070.812210974811 +2010-11-20,1639.0115738178467 +2010-12-04,2537.055119320956 +2010-12-18,2833.049844589572 +2011-01-01,2729.6158386747484 +2011-01-15,2049.6086335285017 +2011-01-29,1940.318758412963 +2011-02-12,1644.3844848991014 +2011-02-26,3034.672001097318 +2011-03-12,2250.656438988452 +2011-03-26,1635.8456358717776 +2011-04-09,2342.1886946276522 +2011-04-23,2436.5441423225134 +2011-05-07,1948.6217697331122 +2011-05-21,2109.2846085628285 +2011-06-04,3150.83886966096 +2011-06-18,2281.087100771984 +2011-07-02,1631.1127934239462 +2011-07-16,1555.0192803762448 +2011-07-30,2070.7616699266323 +2011-08-13,3118.203561704246 +2011-08-27,2252.9598564383546 +2011-09-10,1652.7380225026668 +2011-09-24,1610.3860186212453 +2011-10-08,2047.721284158066 +2011-10-22,3449.673906604999 +2011-11-05,2867.526767419367 +2011-11-19,2032.939622670944 +2011-12-03,3197.2260843730564 +2011-12-17,2445.762234910548 +2011-12-31,3146.7095268934477 +2012-01-14,1700.6370477103983 +2012-01-28,2589.056457989864 +2012-02-11,2964.196570482062 +2012-02-25,2905.271640544031 +2012-03-10,1871.9087800526993 +2012-03-24,2742.472985313357 +2012-04-07,2517.9061025633546 +2012-04-21,3188.605594703277 +2012-05-05,3473.378740255299 +2012-05-19,2544.5192112196873 +2012-06-02,1536.0052262173674 +2012-06-16,3247.027530317866 +2012-06-30,1503.8555783204467 +2012-07-14,2144.5728219554817 +2012-07-28,3160.757504382123 +2012-08-11,3029.5047218007358 +2012-08-25,2121.7625248983804 +2012-09-08,2342.3988837055463 +2012-09-22,2116.726064652478 +2012-10-06,2831.939804221286 +2012-10-20,2948.4856177408883 +2012-11-03,2613.5686021062706 +2012-11-17,1656.0824269184907 +2012-12-01,2872.442154582175 +2012-12-15,1578.7103863084708 +2012-12-29,3386.326704871159 +2013-01-12,3200.762264519826 +2013-01-26,2404.915512718765 +2013-02-09,1732.8959740531789 +2013-02-23,2481.9513603496207 +2013-03-09,2205.5829335636163 +2013-03-23,2093.795967383636 +2013-04-06,3216.4837467169195 +2013-04-20,1943.377749772014 +2013-05-04,2921.271693448349 +2013-05-18,2404.0326721709284 +2013-06-01,2085.184333253248 +2013-06-15,1809.5485317167268 +2013-06-29,2520.1400325496584 +2013-07-13,1828.8470865345755 +2013-07-27,2472.993901989481 +2013-08-10,2242.2002407986884 +2013-08-24,2053.941032752594 +2013-09-07,3267.8693095718927 +2013-09-21,2177.1326142942253 +2013-10-05,1550.1665442046813 +2013-10-19,3092.059082623141 +2013-11-02,2988.2794288980435 +2013-11-16,1548.0260061291838 +2013-11-30,1714.5148617893428 +2013-12-14,2652.5836314723924 +2013-12-28,2886.534640955392 +2014-01-11,2596.83042709785 +2014-01-25,3073.4277089284365 +2014-02-08,3404.5963663649172 +2014-02-22,1989.2199726725958 +2014-03-08,2804.974531759067 +2014-03-22,3163.949466508884 +2014-04-05,1561.1732792974526 +2014-04-19,2815.1198043850272 +2014-05-03,3377.518092225228 +2014-05-17,3304.3886549893705 +2014-05-31,3140.6857731164337 +2014-06-14,2324.465696749807 +2014-06-28,2223.1789851933713 +2014-07-12,2952.0692188116905 +2014-07-26,1578.851273332216 +2014-08-09,3193.7502238046795 +2014-08-23,2524.764591185369 +2014-09-06,2896.1990276836705 +2014-09-20,3453.8505546999486 +2014-10-04,2410.979403773536 +2014-10-18,2920.900374566337 +2014-11-01,3401.2861854289863 +2014-11-15,2373.185575714167 +2014-11-29,2979.5785563899994 +2014-12-13,2956.3183426404703 +2014-12-27,1745.0068983068802 +2015-01-10,1540.8872934790197 +2015-01-24,2108.5329135220827 +2015-02-07,2174.863098439932 +2015-02-21,2599.5857339560484 +2015-03-07,2351.7505654146184 +2015-03-21,2898.7041159573596 +2015-04-04,2287.870992110008 +2015-04-18,3151.970507977004 +2015-05-02,2302.505338079397 +2015-05-16,3327.5993245009054 +2015-05-30,2599.2915369657608 +2015-06-13,2392.967377161955 +2015-06-27,1559.3413159077659 +2015-07-11,3474.634552157656 +2015-07-25,1758.051199242635 +2015-08-08,1651.3697904268956 +2015-08-22,3380.7312111547903 +2015-09-05,1699.957896136455 +2015-09-19,1886.9446773986547 +2015-10-03,1740.3083293456755 +2015-10-17,2498.904532478478 +2015-10-31,2365.813708021638 +2015-11-14,3344.273024692484 +2015-11-28,2353.62580770732 +2015-12-12,3341.674834093281 +2015-12-26,1867.1971460930147 +2016-01-09,2965.331933488798 +2016-01-23,1709.1550460066462 +2016-02-06,2568.6914288667886 +2016-02-20,2975.238990967999 +2016-03-05,2109.5285022506837 +2016-03-19,2089.4401882849334 +2016-04-02,2586.63298067917 +2016-04-16,2844.921046299497 +2016-04-30,1816.7815169456703 +2016-05-14,3458.339847716815 +2016-05-28,1504.904107917662 +2016-06-11,1838.538792378693 +2016-06-25,3495.9204212784744 +2016-07-09,1747.1604821803812 +2016-07-23,2018.958525510623 +2016-08-06,1827.1063539643606 +2016-08-20,1980.9081979125535 +2016-09-03,1839.6328856385107 +2016-09-17,2031.6597127556397 +2016-10-01,2740.2704048999954 +2016-10-15,2462.5493968815713 +2016-10-29,3058.316436956773 +2016-11-12,2606.8376027127797 +2016-11-26,2229.4845392931893 +2016-12-10,3345.984743609705 +2016-12-24,1909.1264109645838 +2017-01-07,2378.9216826831002 +2017-01-21,2344.7948486227006 +2017-02-04,2595.9019826233584 +2017-02-18,2214.3271489961994 +2017-03-04,3472.049594355214 +2017-03-18,2277.9200718182587 +2017-04-01,2897.5449859408614 +2017-04-15,2626.1355555325013 +2017-04-29,3094.157167331264 +2017-05-13,2779.0323148721945 +2017-05-27,3067.1362901780226 +2017-06-10,2784.4536971979956 +2017-06-24,2651.141425809768 +2017-07-08,1899.180986077267 +2017-07-22,1700.6551480648204 +2017-08-05,2299.699813966244 +2017-08-19,2445.0487688764983 +2017-09-02,1889.6478542048494 +2017-09-16,2886.572000191374 +2017-09-30,2517.2460918768556 +2017-10-14,1846.4721975515224 +2017-10-28,1988.5951995699857 +2017-11-11,2999.6171442835707 +2017-11-25,3038.8450025261945 +2017-12-09,1628.8614798560038 +2017-12-23,2436.0013850034957 +2018-01-06,1911.1849908290612 +2018-01-20,3232.7271925577356 +2018-02-03,3181.662759521948 +2018-02-17,1812.6996533497756 +2018-03-03,1827.826260647478 +2018-03-17,2332.8936201019255 +2018-03-31,2311.4036392692733 +2018-04-14,2471.333096279948 +2018-04-28,3447.1226262562514 +2018-05-12,3382.6415595021945 +2018-05-26,3225.9634505482218 +2018-06-09,1881.3022903172516 +2018-06-23,1794.5242464502537 +2018-07-07,2354.7556410438615 +2018-07-21,1641.8529469791013 +2018-08-04,2372.072790971845 +2018-08-18,3188.2400722167017 +2018-09-01,3471.0081947896833 +2018-09-15,1612.69649624618 +2018-09-29,1812.5129421600045 +2018-10-13,3121.54445347093 +2018-10-27,2740.3619118673782 +2018-11-10,1590.2163720926935 +2018-11-24,2066.908913919415 +2018-12-08,1997.5960684215972 +2018-12-22,2279.0303785528563 +2019-01-05,1969.3171830611268 +2019-01-19,3027.7422977842198 +2019-02-02,3306.398731848332 +2019-02-16,2588.4560440120786