diff --git a/Algorithm/QCAlgorithm.Indicators.cs b/Algorithm/QCAlgorithm.Indicators.cs index e51f0c0961b0..6564fef8ecce 100644 --- a/Algorithm/QCAlgorithm.Indicators.cs +++ b/Algorithm/QCAlgorithm.Indicators.cs @@ -1205,6 +1205,26 @@ public ImpliedVolatility IV(Symbol symbol, Symbol mirrorOption = null, decimal? return iv; } + /// + /// Creates a new JurikMovingAverage indicator. + /// + /// The symbol whose JMA we want + /// The period of the JMA + /// The phase parameter (-100 to 100), controls the tradeoff between lag and overshoot + /// The resolution + /// Selects a value from the BaseData to send into the indicator, if null defaults to the Value property of BaseData (x => x.Value) + /// The JurikMovingAverage indicator for the requested symbol over the specified period + [DocumentationAttribute(Indicators)] + public JurikMovingAverage JMA(Symbol symbol, int period, decimal phase = 0, + Resolution? resolution = null, Func selector = null) + { + var name = CreateIndicatorName(symbol, $"JMA({period},{phase})", resolution); + var jurikMovingAverage = new JurikMovingAverage(name, period, phase); + InitializeIndicator(jurikMovingAverage, resolution, selector, symbol); + + return jurikMovingAverage; + } + /// /// Creates a new KaufmanAdaptiveMovingAverage indicator. /// diff --git a/Indicators/JurikMovingAverage.cs b/Indicators/JurikMovingAverage.cs new file mode 100644 index 000000000000..968aa8edfa21 --- /dev/null +++ b/Indicators/JurikMovingAverage.cs @@ -0,0 +1,228 @@ +/* + * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. + * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +using System; + +namespace QuantConnect.Indicators +{ + /// + /// Represents the Jurik Moving Average (JMA) indicator. + /// JMA is a volatility-adaptive filter that produces smoother output with less lag + /// than the traditional EMA. It uses volatility bands to dynamically adjust its + /// smoothing factor, combined with a three-stage adaptive pipeline: adaptive EMA, + /// Kalman-style velocity estimation, and Jurik error correction. + /// The period parameter controls both the base smoothing constants and the volatility + /// band adaptation rate. Higher periods produce smoother, more lagged output. + /// Note: The original JMA algorithm is proprietary (Jurik Research). This implementation + /// follows the community-standard reverse-engineered formula used by pandas_ta, + /// TradingView, and other open-source libraries. + /// + public class JurikMovingAverage : Indicator, IIndicatorWarmUpPeriodProvider + { + private readonly int _period; + private readonly decimal _phaseRatio; + private readonly decimal _beta; + + // Volatility band constants derived from period + private readonly double _length1; + private readonly double _pow1; + private readonly double _bet; + + // Volatility tracking + private const int VolatilitySumLength = 10; + private const int VolatilityAvgLength = 65; + private readonly RollingWindow _voltyWindow; + private readonly RollingWindow _vSumWindow; + private decimal _vSum; + + // Adaptive band state + private decimal _upperBand; + private decimal _lowerBand; + + // Three-stage filter state + private decimal _ma1; + private decimal _det0; + private decimal _det1; + private decimal _jma; + + /// + /// Gets a flag indicating when this indicator is ready and fully initialized + /// + public override bool IsReady => Samples >= _period; + + /// + /// Required period, in data points, for the indicator to be ready and fully initialized. + /// + public int WarmUpPeriod => _period; + + /// + /// Initializes a new instance of the class using the specified name and period. + /// + /// The name of this indicator + /// The period of the JMA, controls the smoothing window and volatility adaptation + /// The phase parameter (-100 to 100), controls the tradeoff between lag and overshoot + public JurikMovingAverage(string name, int period, decimal phase = 0) + : base(name) + { + if (period < 2) + { + throw new ArgumentOutOfRangeException(nameof(period), + "JMA period must be greater than or equal to 2."); + } + + _period = period; + + // Compute phase ratio: clamp phase to [-100, 100] range + if (phase < -100m) + { + _phaseRatio = 0.5m; + } + else if (phase > 100m) + { + _phaseRatio = 2.5m; + } + else + { + _phaseRatio = phase / 100m + 1.5m; + } + + // Base smoothing constant from period + _beta = 0.45m * (_period - 1) / (0.45m * (_period - 1) + 2m); + + // Volatility band constants derived from period + var length = 0.5 * (_period - 1); + _length1 = Math.Max(Math.Log(Math.Sqrt(length)) / Math.Log(2.0) + 2.0, 0); + _pow1 = Math.Max(_length1 - 2.0, 0.5); + var length2 = _length1 * Math.Sqrt(length); + _bet = length2 / (length2 + 1); + + // Rolling windows for volatility tracking + _voltyWindow = new RollingWindow(VolatilitySumLength + 1); + _vSumWindow = new RollingWindow(VolatilityAvgLength); + } + + /// + /// Initializes a new instance of the class using the specified period. + /// + /// The period of the JMA, controls the smoothing window and volatility adaptation + /// The phase parameter (-100 to 100), controls the tradeoff between lag and overshoot + public JurikMovingAverage(int period, decimal phase = 0) + : this($"JMA({period},{phase})", period, phase) + { + } + + /// + /// Computes the next value of this indicator from the given state + /// + /// The input given to the indicator + /// A new value for this indicator + protected override decimal ComputeNextValue(IndicatorDataPoint input) + { + var price = input.Value; + + if (Samples == 1) + { + // Seed all state from first price + _ma1 = price; + _upperBand = price; + _lowerBand = price; + _jma = price; + _det0 = 0; + _det1 = 0; + _vSum = 0; + _voltyWindow.Add(0); + _vSumWindow.Add(0); + return 0m; + } + + // Compute volatility relative to adaptive bands + var del1 = price - _upperBand; + var del2 = price - _lowerBand; + var volty = Math.Abs(del1) != Math.Abs(del2) + ? Math.Max(Math.Abs(del1), Math.Abs(del2)) + : 0m; + + // Update rolling volatility sum (running average over VolatilitySumLength bars) + _voltyWindow.Add(volty); + var oldest = _voltyWindow.Count > VolatilitySumLength + ? _voltyWindow[VolatilitySumLength] + : _voltyWindow[_voltyWindow.Count - 1]; + _vSum = _vSum + (volty - oldest) / VolatilitySumLength; + _vSumWindow.Add(_vSum); + + // Average volatility: mean of v_sum values over available history (up to 65 bars) + decimal avgVolty = 0; + var count = _vSumWindow.Count; + if (count > 0) + { + decimal sum = 0; + for (var i = 0; i < count; i++) + { + sum += _vSumWindow[i]; + } + avgVolty = sum / count; + } + + // Relative volatility factor, clamped to [1, length1^(1/pow1)] + var dVolty = avgVolty == 0 ? 0m : volty / avgVolty; + var maxRVolty = (decimal)Math.Pow(_length1, 1.0 / _pow1); + var rVolty = Math.Max(1.0m, Math.Min(maxRVolty, dVolty)); + + // Update Jurik volatility bands using adaptive coefficient + var pow2 = Math.Pow((double)rVolty, _pow1); + var kv = (decimal)Math.Pow(_bet, Math.Sqrt(pow2)); + _upperBand = del1 > 0 ? price : price - kv * del1; + _lowerBand = del2 < 0 ? price : price - kv * del2; + + // Adaptive alpha: beta^(rVolty^pow1) — varies with market volatility + var alpha = (decimal)Math.Pow((double)_beta, pow2); + + // Stage 1: Adaptive EMA + _ma1 = (1 - alpha) * price + alpha * _ma1; + + // Stage 2: Kalman-style velocity estimation + _det0 = (price - _ma1) * (1 - _beta) + _beta * _det0; + var ma2 = _ma1 + _phaseRatio * _det0; + + // Stage 3: Jurik adaptive error correction + _det1 = (ma2 - _jma) * (1 - alpha) * (1 - alpha) + alpha * alpha * _det1; + _jma = _jma + _det1; + + if (!IsReady) + { + return 0m; + } + + return _jma; + } + + /// + /// Resets this indicator to its initial state + /// + public override void Reset() + { + _ma1 = 0; + _det0 = 0; + _det1 = 0; + _jma = 0; + _upperBand = 0; + _lowerBand = 0; + _vSum = 0; + _voltyWindow.Reset(); + _vSumWindow.Reset(); + base.Reset(); + } + } +} diff --git a/Tests/Indicators/JurikMovingAverageTests.cs b/Tests/Indicators/JurikMovingAverageTests.cs new file mode 100644 index 000000000000..7b2c37e5e53f --- /dev/null +++ b/Tests/Indicators/JurikMovingAverageTests.cs @@ -0,0 +1,124 @@ +/* + * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals. + * Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +using System; +using NUnit.Framework; +using QuantConnect.Indicators; + +namespace QuantConnect.Tests.Indicators +{ + [TestFixture] + public class JurikMovingAverageTests : CommonIndicatorTests + { + protected override IndicatorBase CreateIndicator() + { + return new JurikMovingAverage(7); + } + + protected override string TestFileName => "spy_jma.txt"; + + protected override string TestColumnName => "JMA_7"; + + [Test] + public void JmaComputesCorrectly() + { + // Values verified against pandas_ta_classic reference implementation: + // from pandas_ta_classic.overlap.jma import jma + // jma(pd.Series([10,11,12,11,10,11,12,13,12,11]), length=7, phase=0) + var jma = new JurikMovingAverage(7, 0); + var time = new DateTime(2024, 1, 1); + var prices = new decimal[] { 10, 11, 12, 11, 10, 11, 12, 13, 12, 11 }; + + // Feed first 6 bars: not ready (returns 0) + for (var i = 0; i < 6; i++) + { + jma.Update(time.AddDays(i), prices[i]); + Assert.IsFalse(jma.IsReady); + Assert.AreEqual(0m, jma.Current.Value); + } + + // Bar 7 (first ready bar) + jma.Update(time.AddDays(6), prices[6]); + Assert.IsTrue(jma.IsReady); + Assert.AreEqual(11.504809085586068, (double)jma.Current.Value, 1e-6, + "JMA at bar 7 should match pandas_ta reference"); + + // Bar 8 + jma.Update(time.AddDays(7), prices[7]); + Assert.AreEqual(12.474846874222544, (double)jma.Current.Value, 1e-6, + "JMA at bar 8 should match pandas_ta reference"); + + // Bar 9 + jma.Update(time.AddDays(8), prices[8]); + Assert.AreEqual(12.515689573056372, (double)jma.Current.Value, 1e-6, + "JMA at bar 9 should match pandas_ta reference"); + + // Bar 10 + jma.Update(time.AddDays(9), prices[9]); + Assert.AreEqual(11.711050292217287, (double)jma.Current.Value, 1e-6, + "JMA at bar 10 should match pandas_ta reference"); + } + + [Test] + public void PeriodAffectsOutput() + { + // Verify that different period values produce different outputs, + // confirming the period parameter controls smoothing behavior + var jma7 = new JurikMovingAverage(7); + var jma14 = new JurikMovingAverage(14); + var time = new DateTime(2024, 1, 1); + + // Feed enough data for both to be ready + var prices = new decimal[] { 10, 11, 12, 11, 10, 11, 12, 13, 12, 11, 12, 13, 14, 13, 12 }; + for (var i = 0; i < prices.Length; i++) + { + jma7.Update(time.AddDays(i), prices[i]); + jma14.Update(time.AddDays(i), prices[i]); + } + + Assert.IsTrue(jma7.IsReady); + Assert.IsTrue(jma14.IsReady); + Assert.AreNotEqual(jma7.Current.Value, jma14.Current.Value, + "JMA(7) and JMA(14) should produce different values for the same input"); + } + + [Test] + public void PhaseAffectsOutput() + { + var jmaLag = new JurikMovingAverage(7, -100); + var jmaLead = new JurikMovingAverage(7, 100); + var time = new DateTime(2024, 1, 1); + + var prices = new decimal[] { 10, 11, 12, 11, 10, 11, 12, 13, 12, 11 }; + for (var i = 0; i < prices.Length; i++) + { + jmaLag.Update(time.AddDays(i), prices[i]); + jmaLead.Update(time.AddDays(i), prices[i]); + } + + Assert.IsTrue(jmaLag.IsReady); + Assert.IsTrue(jmaLead.IsReady); + Assert.AreNotEqual(jmaLag.Current.Value, jmaLead.Current.Value, + "JMA with phase=-100 and phase=100 should produce different values"); + } + + [Test] + public void PeriodTooSmallThrows() + { + Assert.Throws(() => new JurikMovingAverage(1)); + Assert.Throws(() => new JurikMovingAverage(0)); + } + } +} diff --git a/Tests/TestData/spy_jma.txt b/Tests/TestData/spy_jma.txt new file mode 100644 index 000000000000..4f633d49c26f --- /dev/null +++ b/Tests/TestData/spy_jma.txt @@ -0,0 +1,501 @@ +Date,Open,High,Low,Close,Volume,JMA_7 +2/22/2013 12:00:00 AM,151.16,151.89,150.49,151.89,106292600, +2/25/2013 12:00:00 AM,152.63,152.86,149,149,245483200, +2/26/2013 12:00:00 AM,149.72,150.2,148.73,150.02,186331600, +2/27/2013 12:00:00 AM,149.89,152.33,149.76,151.91,143932600, +2/28/2013 12:00:00 AM,151.9,152.87,151.41,151.61,123724200, +3/1/2013 12:00:00 AM,151.09,152.34,150.41,152.11,170612700, +3/4/2013 12:00:00 AM,151.76,152.92,151.52,152.92,97328800,152.466951821586 +3/5/2013 12:00:00 AM,153.66,154.7,153.64,154.29,121238200,153.603012776242 +3/6/2013 12:00:00 AM,154.84,154.92,154.16,154.5,94284300,154.288366544423 +3/7/2013 12:00:00 AM,154.71,154.98,154.52,154.78,86002000,154.643179916927 +3/8/2013 12:00:00 AM,155.46,155.65,154.66,155.44,122805700,155.080052408648 +3/11/2013 12:00:00 AM,155.33,156.04,155.13,156.03,83235500,155.581145894216 +3/12/2013 12:00:00 AM,155.92,156.1,155.21,155.68,104108300,155.781613605679 +3/13/2013 12:00:00 AM,155.76,156.12,155.23,155.9,91051500,155.877060494037 +3/14/2013 12:00:00 AM,156.31,156.8,156.22,156.73,123614200,156.149543315601 +3/15/2013 12:00:00 AM,155.85,156.04,155.31,155.83,133153200,156.236277514093 +3/18/2013 12:00:00 AM,154.34,155.64,154.2,154.97,126518300,155.998934047869 +3/19/2013 12:00:00 AM,155.3,155.51,153.59,154.61,167049900,155.582607222696 +3/20/2013 12:00:00 AM,155.52,155.95,155.26,155.69,113607800,155.389131624865 +3/21/2013 12:00:00 AM,154.75,155.64,154.1,154.36,128492900,155.137469466612 +3/22/2013 12:00:00 AM,154.84,155.6,154.73,155.6,111103200,155.072816359778 +3/25/2013 12:00:00 AM,155.99,156.27,154.35,154.95,151231800,155.043838783465 +3/26/2013 12:00:00 AM,155.59,156.23,155.42,156.19,86114000,155.237198003992 +3/27/2013 12:00:00 AM,155.26,156.24,155,156.19,99783700,155.487163158578 +3/28/2013 12:00:00 AM,156.09,156.85,155.75,156.67,102687700,155.834181404954 +4/1/2013 12:00:00 AM,156.59,156.91,155.67,156.05,99128500,156.048142132875 +4/2/2013 12:00:00 AM,156.61,157.21,156.37,156.82,101291000,156.257125071554 +4/3/2013 12:00:00 AM,156.91,157.03,154.82,155.23,153781800,156.179791238466 +4/4/2013 12:00:00 AM,155.43,156.17,155.09,155.86,129370000,156.076834255845 +4/5/2013 12:00:00 AM,153.95,155.35,153.77,155.16,155171000,155.891954415253 +4/8/2013 12:00:00 AM,155.27,156.22,154.75,156.21,86039700,155.831006467409 +4/9/2013 12:00:00 AM,156.5,157.32,155.98,156.75,100591500,155.968133849114 +4/10/2013 12:00:00 AM,157.17,158.87,157.13,158.67,134837300,157.155929734257 +4/11/2013 12:00:00 AM,158.7,159.71,158.54,159.19,109635100,158.260137739253 +4/12/2013 12:00:00 AM,158.68,159.04,157.92,158.8,116024900,158.766860672783 +4/15/2013 12:00:00 AM,158,158.13,155.1,155.12,215505700,157.143789091940 +4/16/2013 12:00:00 AM,156.29,157.49,155.91,157.41,147152400,156.797802733594 +4/17/2013 12:00:00 AM,156.29,156.32,154.28,155.11,226231500,156.204977085984 +4/18/2013 12:00:00 AM,155.37,155.41,153.55,154.14,166888900,155.247908763664 +4/19/2013 12:00:00 AM,154.5,155.55,154.12,155.48,149219300,154.888760312858 +4/22/2013 12:00:00 AM,155.78,156.54,154.75,156.17,106216500,155.042508995913 +4/23/2013 12:00:00 AM,156.95,157.93,156.17,157.78,165592000,156.122764549245 +4/24/2013 12:00:00 AM,157.83,158.3,157.54,157.88,94996400,156.976311388014 +4/25/2013 12:00:00 AM,158.25,159.27,158.1,158.52,130774400,157.715695950949 +4/26/2013 12:00:00 AM,158.32,158.6,157.73,158.24,95639000,158.116731132488 +4/29/2013 12:00:00 AM,158.67,159.65,158.42,159.3,88223400,158.583850062660 +4/30/2013 12:00:00 AM,159.27,159.72,158.61,159.68,115647600,159.053891728806 +5/1/2013 12:00:00 AM,159.33,159.41,158.1,158.28,138538400,159.167683467568 +5/2/2013 12:00:00 AM,158.68,159.89,158.53,159.75,96232300,159.287224564746 +5/3/2013 12:00:00 AM,161.14,161.88,161.04,161.37,143795900,160.038575587342 +5/6/2013 12:00:00 AM,161.49,162.01,161.42,161.78,66618900,160.831603259819 +5/7/2013 12:00:00 AM,162.11,162.65,161.67,162.6,89907000,161.675447921067 +5/8/2013 12:00:00 AM,162.42,163.39,162.33,163.34,96840500,162.507029909814 +5/9/2013 12:00:00 AM,163.27,163.7,162.47,162.88,106479000,162.916143569527 +5/10/2013 12:00:00 AM,163,163.55,162.51,163.41,102968200,163.179381067617 +5/13/2013 12:00:00 AM,163,163.81,162.82,163.54,79718500,163.367270831364 +5/14/2013 12:00:00 AM,163.67,165.35,163.67,165.23,118429300,164.053790966950 +5/15/2013 12:00:00 AM,164.98,166.45,164.91,166.12,120520600,165.005819852980 +5/16/2013 12:00:00 AM,165.76,166.36,165.09,165.34,109631200,165.462577165767 +5/17/2013 12:00:00 AM,165.98,167.04,165.73,166.94,129521200,166.052546828097 +5/20/2013 12:00:00 AM,166.78,167.58,166.61,166.93,84703300,166.493048937132 +5/21/2013 12:00:00 AM,167.07,167.8,166.5,167.17,95130500,166.821181084853 +5/22/2013 12:00:00 AM,167.34,169.07,165.17,165.93,243215800,166.856205118057 +5/23/2013 12:00:00 AM,164.2,165.91,163.94,165.45,210629800,166.645115740670 +5/24/2013 12:00:00 AM,164.44,165.38,163.98,165.31,151265100,166.317948516902 +5/28/2013 12:00:00 AM,167.04,167.78,165.81,166.3,142755000,166.132467677538 +5/29/2013 12:00:00 AM,165.41,165.8,164.34,165.22,160155000,165.925700002790 +5/30/2013 12:00:00 AM,165.35,166.59,165.22,165.83,106389200,165.799752293126 +5/31/2013 12:00:00 AM,165.36,166.31,163.13,163.45,175401500,165.224451714170 +6/3/2013 12:00:00 AM,163.86,164.46,162.66,164.35,167947700,164.803656122294 +6/4/2013 12:00:00 AM,164.44,165.1,162.73,163.56,157405600,164.420191122575 +6/5/2013 12:00:00 AM,163.11,163.42,161.13,161.27,210885500,163.197232983167 +6/6/2013 12:00:00 AM,161.2,162.74,160.25,162.73,200017000,162.585363759889 +6/7/2013 12:00:00 AM,163.89,164.95,163.14,164.8,188303400,162.973012750724 +6/10/2013 12:00:00 AM,165.31,165.4,164.37,164.8,102463000,163.531261710770 +6/11/2013 12:00:00 AM,163.27,164.54,162.74,163.1,159335000,163.737520844332 +6/12/2013 12:00:00 AM,164.25,164.39,161.6,161.75,176792400,163.338745512510 +6/13/2013 12:00:00 AM,161.64,164.5,161.3,164.21,163114300,163.273913072726 +6/14/2013 12:00:00 AM,164.03,164.67,162.91,163.18,140994200,163.253534108740 +6/17/2013 12:00:00 AM,164.3,165.22,163.55,164.44,135807000,163.421690840452 +6/18/2013 12:00:00 AM,164.54,165.99,164.52,165.74,114574200,164.086968568709 +6/19/2013 12:00:00 AM,165.61,165.89,163.38,163.45,205760600,164.300203941947 +6/20/2013 12:00:00 AM,161.83,162.1,158.98,159.4,320271500,161.970091526739 +6/21/2013 12:00:00 AM,159.6,159.76,157.47,159.07,270449000,160.304432458437 +6/24/2013 12:00:00 AM,157.39,158.43,155.73,157.06,221705700,158.423790406676 +6/25/2013 12:00:00 AM,158.52,159.17,157.42,158.57,161967200,157.818256739993 +6/26/2013 12:00:00 AM,159.89,160.5,159.25,160.14,134499400,158.109662996185 +6/27/2013 12:00:00 AM,161.12,161.82,160.95,161.08,129281700,158.995845895049 +6/28/2013 12:00:00 AM,160.62,161.4,159.86,160.42,160138800,159.623591915621 +7/1/2013 12:00:00 AM,161.27,162.48,161.08,161.36,131682500,160.197086170580 +7/2/2013 12:00:00 AM,161.1,162.3,160.5,161.21,154807500,160.625873337504 +7/3/2013 12:00:00 AM,160.51,161.77,160.22,161.28,75214000,160.931919363561 +7/5/2013 12:00:00 AM,162.53,163.08,161.3,163.02,121865400,161.516254849938 +7/8/2013 12:00:00 AM,163.89,164.39,163.08,163.95,107930700,162.379386374179 +7/9/2013 12:00:00 AM,164.97,165.33,164.27,165.13,119159000,163.514808048394 +7/10/2013 12:00:00 AM,165.01,165.75,164.63,165.19,119410100,164.347767608762 +7/11/2013 12:00:00 AM,167.13,167.61,166.53,167.44,135448000,165.723823813993 +7/12/2013 12:00:00 AM,167.4,167.93,167.13,167.51,102636900,166.699885391283 +7/15/2013 12:00:00 AM,167.97,168.39,167.68,168.15,69376600,167.440137487063 +7/16/2013 12:00:00 AM,168.25,168.36,167.07,167.52,88577000,167.798965889555 +7/17/2013 12:00:00 AM,168.18,168.48,167.73,167.95,91526200,167.982202705314 +7/18/2013 12:00:00 AM,168.28,169.27,168.2,168.87,104445800,168.227038418293 +7/19/2013 12:00:00 AM,168.51,169.23,168.31,169.17,103363100,168.518302276832 +7/22/2013 12:00:00 AM,169.39,169.74,169.01,169.5,79268700,168.832418991423 +7/23/2013 12:00:00 AM,169.79,169.83,169.05,169.14,80761400,169.060654150431 +7/24/2013 12:00:00 AM,169.8,169.86,168.18,168.52,112662100,169.105746824550 +7/25/2013 12:00:00 AM,168.2,169.08,167.94,168.93,111033200,169.091348777149 +7/26/2013 12:00:00 AM,168.24,169.16,167.52,169.11,107418600,169.088293507012 +7/29/2013 12:00:00 AM,168.71,169.06,168.11,168.59,79614200,169.024606049773 +7/30/2013 12:00:00 AM,169.12,169.28,168.19,168.59,85026800,168.926025377991 +7/31/2013 12:00:00 AM,168.94,169.85,168.49,168.71,142264100,168.842071350157 +8/1/2013 12:00:00 AM,169.98,170.81,169.9,170.66,109966700,169.062842014060 +8/2/2013 12:00:00 AM,170.3,170.97,170.05,170.95,89402700,169.494368462621 +8/5/2013 12:00:00 AM,170.61,170.96,170.35,170.7,53408200,169.927933525265 +8/6/2013 12:00:00 AM,170.37,170.52,169.35,169.73,87231100,170.134830622596 +8/7/2013 12:00:00 AM,169.2,169.43,168.55,169.18,84558600,170.083399219437 +8/8/2013 12:00:00 AM,170,170.18,168.93,169.8,101924300,169.987136080067 +8/9/2013 12:00:00 AM,169.56,170.1,168.72,169.31,91473000,169.838548485056 +8/12/2013 12:00:00 AM,168.44,169.31,168.38,169.11,68436400,169.651721599304 +8/13/2013 12:00:00 AM,169.4,169.9,168.41,169.61,80630100,169.543093609249 +8/14/2013 12:00:00 AM,169.52,169.8,168.7,168.74,78905600,169.381083711448 +8/15/2013 12:00:00 AM,167.35,167.43,166.09,166.38,152546100,168.618030975504 +8/16/2013 12:00:00 AM,166.04,166.63,165.5,165.83,130207000,167.636618072250 +8/19/2013 12:00:00 AM,165.64,166.21,164.76,164.77,96296100,166.464132120633 +8/20/2013 12:00:00 AM,165.03,166.2,164.86,165.58,88917400,165.790280986530 +8/21/2013 12:00:00 AM,165.15,166.03,164.19,164.56,157723100,165.275673208659 +8/22/2013 12:00:00 AM,164.92,166.3,164.89,166.06,101273000,165.130628460030 +8/23/2013 12:00:00 AM,166.54,166.83,165.77,166.62,90796000,165.299877877729 +8/26/2013 12:00:00 AM,166.77,167.3,165.89,166,89398400,165.517586399246 +8/27/2013 12:00:00 AM,164.33,164.98,163.21,163.33,154275400,165.133726826758 +8/28/2013 12:00:00 AM,163.3,164.49,163.05,163.91,105120800,164.738790168200 +8/29/2013 12:00:00 AM,163.55,165.04,163.4,164.17,118828000,164.442168558207 +8/30/2013 12:00:00 AM,164.52,164.53,163.17,163.65,134186300,164.178620520143 +9/3/2013 12:00:00 AM,165.24,165.58,163.7,164.39,142802600,164.066368751981 +9/4/2013 12:00:00 AM,164.44,166.03,164.14,165.75,97290400,164.261554580359 +9/5/2013 12:00:00 AM,165.85,166.4,165.73,165.96,62845000,164.644406234109 +9/6/2013 12:00:00 AM,166.49,166.98,164.48,166.04,159383800,165.069482514514 +9/9/2013 12:00:00 AM,166.45,167.73,166.45,167.63,87407200,165.803831221208 +9/10/2013 12:00:00 AM,168.63,168.9,168.26,168.87,104783000,166.947520511336 +9/11/2013 12:00:00 AM,168.64,169.4,168.35,169.4,94325700,168.021617298428 +9/12/2013 12:00:00 AM,169.37,169.56,168.72,168.95,82557800,168.656252961404 +9/13/2013 12:00:00 AM,169.15,169.46,168.74,169.33,72257500,169.048183929125 +9/16/2013 12:00:00 AM,171.18,171.24,170.04,170.31,126050700,169.476831108722 +9/17/2013 12:00:00 AM,170.47,171.11,170.46,171.07,82232500,170.036204504181 +9/18/2013 12:00:00 AM,170.97,173.52,170.58,173.05,201318000,171.284126054956 +9/19/2013 12:00:00 AM,173.51,173.6,172.59,172.76,146440600,172.112472810356 +9/20/2013 12:00:00 AM,172.3,172.33,170.58,170.72,132317600,172.292767286462 +9/23/2013 12:00:00 AM,170.5,170.65,169.39,169.93,104533900,171.913075105795 +9/24/2013 12:00:00 AM,169.89,170.53,169.21,169.53,100422400,171.295307535270 +9/25/2013 12:00:00 AM,169.65,169.98,168.89,169.04,114559100,170.598639883776 +9/26/2013 12:00:00 AM,169.34,170.17,169.05,169.69,76579600,170.109761375193 +9/27/2013 12:00:00 AM,168.81,169.14,168.47,168.91,97695900,169.705349407840 +9/30/2013 12:00:00 AM,167.45,168.54,167.15,168.01,143609700,169.223766239150 +10/1/2013 12:00:00 AM,168.14,169.5,168,169.34,126981900,168.978634706117 +10/2/2013 12:00:00 AM,168.35,169.34,167.83,169.18,112803800,168.900929057496 +10/3/2013 12:00:00 AM,168.77,168.94,166.84,167.62,176384300,168.689639122277 +10/4/2013 12:00:00 AM,167.74,169.06,167.53,168.89,96600700,168.579361970457 +10/7/2013 12:00:00 AM,167.43,168.45,167.25,167.43,95653200,168.362119116071 +10/8/2013 12:00:00 AM,167.45,167.62,165.36,165.48,176560600,167.474759732715 +10/9/2013 12:00:00 AM,165.8,166.2,164.53,165.6,168100500,166.708704616731 +10/10/2013 12:00:00 AM,167.29,169.26,167.23,169.17,193988300,167.016189090007 +10/11/2013 12:00:00 AM,168.9,170.32,168.77,170.26,104956400,168.127520037933 +10/14/2013 12:00:00 AM,169.24,171.08,169.08,170.94,111248400,169.331867269359 +10/15/2013 12:00:00 AM,170.52,171.15,169.47,169.7,154901700,169.910325545034 +10/16/2013 12:00:00 AM,170.75,172.16,170.63,172.07,160895600,170.698093670989 +10/17/2013 12:00:00 AM,171.37,173.32,171.34,173.22,128890400,171.796015701614 +10/18/2013 12:00:00 AM,173.86,174.51,173.51,174.39,138055900,173.062743733279 +10/21/2013 12:00:00 AM,174.45,174.75,174.01,174.4,104058600,173.863218839382 +10/22/2013 12:00:00 AM,174.91,175.93,174.66,175.41,126638900,174.601475320746 +10/23/2013 12:00:00 AM,174.83,174.89,173.96,174.57,105043800,174.934884177347 +10/24/2013 12:00:00 AM,174.9,175.37,174.51,175.15,70037700,175.105737994900 +10/25/2013 12:00:00 AM,175.51,176,175.17,175.95,93453900,175.352277560631 +10/28/2013 12:00:00 AM,175.9,176.47,175.7,176.23,84497900,175.642180132560 +10/29/2013 12:00:00 AM,176.6,177.24,176.38,177.17,87200600,176.126155762312 +10/30/2013 12:00:00 AM,177.4,177.51,175.66,176.29,135506600,176.404170035105 +10/31/2013 12:00:00 AM,176.18,176.89,175.53,175.79,133352300,176.447003652365 +11/1/2013 12:00:00 AM,176.05,176.61,175.22,176.21,142771700,176.414869243663 +11/4/2013 12:00:00 AM,176.71,176.9,175.982,176.83,85257800,176.456793237654 +11/5/2013 12:00:00 AM,176.16,176.75,175.57,176.27,85466500,176.470017540251 +11/6/2013 12:00:00 AM,177.03,177.5,176.54,177.17,87123100,176.579437018039 +11/7/2013 12:00:00 AM,177.56,177.64,174.76,174.93,148632200,176.419046566739 +11/8/2013 12:00:00 AM,174.85,177.31,174.85,177.29,136500100,176.427269627648 +11/11/2013 12:00:00 AM,177.14,177.53,176.91,177.32,66226700,176.584998464708 +11/12/2013 12:00:00 AM,176.95,177.36,176.37,176.96,83193500,176.744960525588 +11/13/2013 12:00:00 AM,176.1,178.41,176.09,178.38,99795600,177.083640659090 +11/14/2013 12:00:00 AM,178.53,179.42,178.25,179.27,102965800,177.700877437475 +11/15/2013 12:00:00 AM,179.57,180.12,179.33,180.05,102759600,178.510526362232 +11/18/2013 12:00:00 AM,180.39,180.5,179.02,179.42,98459500,179.047431210170 +11/19/2013 12:00:00 AM,179.31,179.87,178.72,179.03,93045800,179.304090564238 +11/20/2013 12:00:00 AM,179.41,179.93,177.98,178.47,124692900,179.295798184905 +11/21/2013 12:00:00 AM,179,180.05,178.86,179.91,91804700,179.356051599155 +11/22/2013 12:00:00 AM,180.01,180.83,179.77,180.81,81234700,179.616868174327 +11/25/2013 12:00:00 AM,181.11,181.17,180.37,180.63,79187800,179.937156488438 +11/26/2013 12:00:00 AM,180.74,181.22,180.4,180.68,86697800,180.230434232518 +11/27/2013 12:00:00 AM,180.89,181.24,180.65,181.12,58227900,180.518950890729 +11/29/2013 12:00:00 AM,181.34,181.75,180.8,181,54981700,180.749784240361 +12/2/2013 12:00:00 AM,181.12,181.43,180.25,180.53,99262300,180.842299206545 +12/3/2013 12:00:00 AM,179.95,180.39,179.17,179.75,115939400,180.724786979850 +12/4/2013 12:00:00 AM,179.18,180.48,178.35,179.73,122956300,180.498645382007 +12/5/2013 12:00:00 AM,179.42,179.74,178.77,178.94,106333600,180.145587791136 +12/6/2013 12:00:00 AM,180.72,181.11,180.15,180.94,127424400,180.057224409650 +12/9/2013 12:00:00 AM,181.47,181.67,181.16,181.4,69987400,180.239229800194 +12/10/2013 12:00:00 AM,180.96,181.36,180.63,180.75,77428000,180.445167890656 +12/11/2013 12:00:00 AM,180.81,180.85,178.5,178.72,130188800,180.276913358319 +12/12/2013 12:00:00 AM,178.61,178.86,177.76,178.13,115321400,179.773140421579 +12/13/2013 12:00:00 AM,178.48,178.66,177.77,178.11,107741000,179.249999040411 +12/16/2013 12:00:00 AM,178.95,179.81,178.9,179.22,96100500,178.962911099597 +12/17/2013 12:00:00 AM,179.37,179.41,178.25,178.65,89432200,178.792429470351 +12/18/2013 12:00:00 AM,178.91,181.73,177.32,181.7,234455700,179.379422500494 +12/19/2013 12:00:00 AM,181.18,181.7,180.71,181.49,136717700,180.016470147183 +12/20/2013 12:00:00 AM,180.67,181.99,180.57,181.56,196678700,180.566792677059 +12/23/2013 12:00:00 AM,182.41,182.64,182.07,182.53,85407800,181.195454739454 +12/24/2013 12:00:00 AM,182.57,183.01,182.53,182.93,45363300,181.813539376469 +12/26/2013 12:00:00 AM,183.37,183.96,183.32,183.85,63215200,182.552420837214 +12/27/2013 12:00:00 AM,184.14,184.18,183.66,183.85,61794800,183.125955210604 +12/30/2013 12:00:00 AM,183.92,184.02,183.58,183.82,56807200,183.513429386333 +12/31/2013 12:00:00 AM,184.11,184.69,183.93,184.69,86123600,183.904972890720 +1/2/2014 12:00:00 AM,183.91,184.07,182.48,182.92,119511100,183.976395578685 +1/3/2014 12:00:00 AM,183.24,183.6,182.63,182.88,81352000,183.827149534680 +1/6/2014 12:00:00 AM,183.52,183.56,182.08,182.36,106889400,183.519161703053 +1/7/2014 12:00:00 AM,183.12,183.79,182.95,183.48,86041200,183.336694601472 +1/8/2014 12:00:00 AM,183.46,183.83,182.89,183.52,96481400,183.288088864412 +1/9/2014 12:00:00 AM,184.1,184.13,182.79,183.64,90529400,183.333184639403 +1/10/2014 12:00:00 AM,183.96,184.22,183.01,184.14,101986500,183.486671263334 +1/13/2014 12:00:00 AM,183.64,184.18,181.34,181.68,149507600,183.285400914463 +1/14/2014 12:00:00 AM,182.27,183.77,181.95,183.67,104596300,183.202701660032 +1/15/2014 12:00:00 AM,184.1,184.94,183.71,184.66,98370100,183.447899363770 +1/16/2014 12:00:00 AM,184.3,184.66,183.83,184.42,72112100,183.737690333250 +1/17/2014 12:00:00 AM,184.1,184.45,183.32,183.63,107832500,183.883045390456 +1/21/2014 12:00:00 AM,184.72,184.77,183.05,184.18,88504600,183.985573380276 +1/22/2014 12:00:00 AM,184.51,184.57,183.91,184.3,60761400,184.082757051648 +1/23/2014 12:00:00 AM,183.38,183.4,181.82,182.79,132343700,183.951833003333 +1/24/2014 12:00:00 AM,181.59,181.66,178.83,178.89,208595800,181.720314008565 +1/27/2014 12:00:00 AM,179.05,179.52,177.12,178.01,179949700,179.657670805798 +1/28/2014 12:00:00 AM,178.23,179.3,178.12,179.07,108851800,178.811758931421 +1/29/2014 12:00:00 AM,177.59,178.55,176.88,177.35,215244500,178.104348843752 +1/30/2014 12:00:00 AM,178.88,179.81,178.26,179.23,116150500,177.950926543537 +1/31/2014 12:00:00 AM,177,179.29,176.92,178.18,194573800,177.958807937364 +2/3/2014 12:00:00 AM,177.95,178.37,173.83,174.17,254370100,176.196080004095 +2/4/2014 12:00:00 AM,174.98,175.84,174.11,175.38,164781000,175.447864311684 +2/5/2014 12:00:00 AM,174.77,175.56,173.71,175.17,163629100,175.134530752413 +2/6/2014 12:00:00 AM,175.61,177.48,175.22,177.48,132379000,175.553194525039 +2/7/2014 12:00:00 AM,178.29,179.87,177.73,179.68,170701300,177.291484521034 +2/10/2014 12:00:00 AM,179.7,180.07,179.21,180.01,91977200,178.675432675890 +2/11/2014 12:00:00 AM,180.23,182.44,180.04,181.98,121636400,180.421476392851 +2/12/2014 12:00:00 AM,182.26,182.83,181.71,182.07,94414700,181.465666175826 +2/13/2014 12:00:00 AM,180.85,183.2,180.83,183.01,100515600,182.298638959259 +2/14/2014 12:00:00 AM,182.9,184.36,182.67,184.02,96413500,183.154991362868 +2/18/2014 12:00:00 AM,184.2,184.49,183.65,184.24,80018500,183.766542621985 +2/19/2014 12:00:00 AM,183.78,184.95,182.87,183.02,125995500,183.941442609894 +2/20/2014 12:00:00 AM,183.27,184.52,182.6,184.1,104841400,184.016133167333 +2/21/2014 12:00:00 AM,184.45,184.89,183.8,183.89,118069200,184.042009375408 +2/24/2014 12:00:00 AM,184.3,186.15,184.2,184.91,113918000,184.200624246307 +2/25/2014 12:00:00 AM,185.03,185.59,184.23,184.84,116815100,184.400994265540 +2/26/2014 12:00:00 AM,185.1,185.6,184.33,184.85,98329400,184.587047798711 +2/27/2014 12:00:00 AM,184.58,185.87,184.37,185.82,93720800,184.869542695469 +2/28/2014 12:00:00 AM,185.78,187.15,185.05,186.29,150681900,185.252075134500 +3/3/2014 12:00:00 AM,184.65,185.45,183.75,184.98,167434300,185.435706749061 +3/4/2014 12:00:00 AM,186.79,187.98,186.75,187.58,169638300,185.956218612194 +3/5/2014 12:00:00 AM,187.75,188.07,187.45,187.75,88273700,186.541388482932 +3/6/2014 12:00:00 AM,188.24,188.61,187.78,188.18,82328000,187.120457597531 +3/7/2014 12:00:00 AM,188.93,188.96,187.43,188.26,117468700,187.586172717291 +3/10/2014 12:00:00 AM,187.94,188.23,187.08,188.16,74834300,187.912717059109 +3/11/2014 12:00:00 AM,188.48,188.71,186.8,187.23,98827400,187.982555857330 +3/12/2014 12:00:00 AM,186.32,187.35,185.9,187.28,104701600,187.896640759361 +3/13/2014 12:00:00 AM,187.88,187.99,184.66,185.18,154146000,187.373127896035 +3/14/2014 12:00:00 AM,184.8,185.8,184.44,184.66,153743000,186.606468332002 +3/17/2014 12:00:00 AM,185.62,186.77,185.51,186.33,98250600,186.161390084663 +3/18/2014 12:00:00 AM,186.74,187.91,186.51,187.66,101626300,186.224364440122 +3/19/2014 12:00:00 AM,187.71,187.94,185.47,186.66,176115300,186.366867205211 +3/20/2014 12:00:00 AM,186.25,187.89,185.92,187.75,116944200,186.646048778176 +3/21/2014 12:00:00 AM,187.71,189.02,186.03,186.2,163058100,186.745706109687 +3/24/2014 12:00:00 AM,186.84,187.07,184.62,185.43,120889800,186.584178756436 +3/25/2014 12:00:00 AM,186.4,186.94,185.27,186.31,103492000,186.423319807326 +3/26/2014 12:00:00 AM,187,187.34,184.92,184.97,119656900,186.129082380276 +3/27/2014 12:00:00 AM,184.77,185.34,183.9,184.58,142204500,185.730473798063 +3/28/2014 12:00:00 AM,185.14,186.42,185,185.49,101527200,185.466443880784 +3/31/2014 12:00:00 AM,186.66,187.3,186.47,187.01,99626700,185.560748230628 +4/1/2014 12:00:00 AM,187.65,188.36,187.45,188.25,88958900,186.200720229139 +4/2/2014 12:00:00 AM,188.5,189.13,188.14,188.88,78714300,187.083447605342 +4/3/2014 12:00:00 AM,189.13,189.22,188.05,188.63,77253000,187.746362005688 +4/4/2014 12:00:00 AM,189.64,189.7,186.1,186.4,169003600,187.876707656946 +4/7/2014 12:00:00 AM,185.9,186.26,183.96,184.34,140661000,186.874910515092 +4/8/2014 12:00:00 AM,184.18,185.4,183.59,185.1,112585800,186.138366479723 +4/9/2014 12:00:00 AM,185.61,187.15,185.06,187.09,100013900,185.949996800253 +4/10/2014 12:00:00 AM,187.07,187.17,182.93,183.15,172873800,185.206260753403 +4/11/2014 12:00:00 AM,182.16,183.42,181.31,181.51,167016600,183.689132151843 +4/14/2014 12:00:00 AM,182.92,183.37,181.44,182.94,132183000,182.920676995085 +4/15/2014 12:00:00 AM,183.35,184.33,181.51,184.2,157026300,182.786434627933 +4/16/2014 12:00:00 AM,185.47,186.14,184.65,186.12,104151700,183.670680417668 +4/17/2014 12:00:00 AM,185.87,186.91,185.56,186.39,105192300,184.650463099328 +4/21/2014 12:00:00 AM,186.45,187.1,186.21,187.04,68212800,185.580475879425 +4/22/2014 12:00:00 AM,187.24,188.4,187.13,187.89,85686400,186.498565754343 +4/23/2014 12:00:00 AM,187.8,187.92,187.3,187.45,73611400,187.071890184709 +4/24/2014 12:00:00 AM,188.39,188.39,186.93,187.83,88109600,187.451923247073 +4/25/2014 12:00:00 AM,187.23,187.33,185.87,186.29,100307700,187.476759049968 +4/28/2014 12:00:00 AM,187.08,187.69,184.96,186.88,134950500,187.371170151238 +4/29/2014 12:00:00 AM,187.48,188.04,187.08,187.75,83971400,187.364625467693 +4/30/2014 12:00:00 AM,187.46,188.5,187.18,188.31,101461700,187.520162283223 +5/1/2014 12:00:00 AM,188.25,188.84,187.73,188.32,92856500,187.747212318251 +5/2/2014 12:00:00 AM,188.33,189.14,187.78,188.06,97969300,187.929101148883 +5/5/2014 12:00:00 AM,187.16,188.55,186.62,188.42,75827800,188.096556848864 +5/6/2014 12:00:00 AM,188.03,188.13,186.74,186.78,85356200,188.001333304731 +5/7/2014 12:00:00 AM,187.41,187.97,186.01,187.88,106377000,187.903434104654 +5/8/2014 12:00:00 AM,187.71,189.05,187.08,187.68,93495400,187.823782151249 +5/9/2014 12:00:00 AM,187.71,188.04,186.83,187.96,83648000,187.806451469234 +5/12/2014 12:00:00 AM,188.77,189.88,188,189.79,86871400,188.093470815890 +5/13/2014 12:00:00 AM,190.03,190.42,189.77,189.96,66416800,188.556254812370 +5/14/2014 12:00:00 AM,189.82,189.88,188.79,189.06,72243900,188.901142347874 +5/15/2014 12:00:00 AM,188.68,188.72,186.48,187.4,154897300,188.857867078714 +5/16/2014 12:00:00 AM,187.5,188.13,186.72,188.05,97384100,188.672148526736 +5/19/2014 12:00:00 AM,187.71,188.89,187.52,188.74,63676300,188.569267432747 +5/20/2014 12:00:00 AM,188.67,188.67,187.07,187.55,111512600,188.383154108934 +5/21/2014 12:00:00 AM,188.07,189.22,188.06,189.13,88998000,188.381422782095 +5/22/2014 12:00:00 AM,189.2,189.98,188.86,189.59,61519500,188.579313075280 +5/23/2014 12:00:00 AM,189.76,190.48,189.59,190.35,61108000,188.965655955707 +5/27/2014 12:00:00 AM,191.06,191.58,190.95,191.52,71961100,189.737895268707 +5/28/2014 12:00:00 AM,191.55,191.82,191.06,191.38,66048500,190.380476296457 +5/29/2014 12:00:00 AM,191.85,192.4,191.33,192.37,64139000,191.101681430114 +5/30/2014 12:00:00 AM,192.21,192.8,192.03,192.68,76256200,191.743388675451 +6/2/2014 12:00:00 AM,192.98,192.99,191.97,192.9,64568200,192.247809581730 +6/3/2014 12:00:00 AM,192.41,192.9,192.25,192.8,64985200,192.584949184674 +6/4/2014 12:00:00 AM,192.46,193.3,192.26,193.19,55495200,192.843914870178 +6/5/2014 12:00:00 AM,193.43,194.65,192.7,194.45,92035600,193.315075461228 +6/6/2014 12:00:00 AM,194.88,195.43,194.78,195.38,78650300,194.057283147240 +6/9/2014 12:00:00 AM,195.36,196.05,195.17,195.58,65025700,194.710147741117 +6/10/2014 12:00:00 AM,195.36,195.64,194.92,195.6,56992500,195.165045503289 +6/11/2014 12:00:00 AM,194.87,195.12,194.48,194.92,68703000,195.358125024334 +6/12/2014 12:00:00 AM,194.68,194.8,193.11,193.54,106125500,195.180104802294 +6/13/2014 12:00:00 AM,193.89,194.32,193.3,194.13,81991000,194.898232125619 +6/16/2014 12:00:00 AM,193.88,194.7,193.66,194.29,87349400,194.657555782376 +6/17/2014 12:00:00 AM,194,194.97,193.81,194.83,84776800,194.566375141494 +6/18/2014 12:00:00 AM,194.83,196.37,194.4,196.26,105144800,194.807825780381 +6/19/2014 12:00:00 AM,196.46,196.6,195.8,196.48,85833100,195.213584448030 +6/20/2014 12:00:00 AM,196.01,196.1,195.7,195.94,99965100,195.557942278351 +6/23/2014 12:00:00 AM,196,196.05,195.52,195.88,70447200,195.782874419745 +6/24/2014 12:00:00 AM,195.54,196.5,194.48,194.7,96018200,195.736652077994 +6/25/2014 12:00:00 AM,194.28,195.78,194.25,195.58,82694100,195.658820936063 +6/26/2014 12:00:00 AM,195.6,195.63,194.13,195.44,84216600,195.587101145136 +6/27/2014 12:00:00 AM,194.98,195.88,194.88,195.82,71326100,195.586865928258 +6/30/2014 12:00:00 AM,195.71,196.16,195.53,195.72,70396800,195.617951739906 +7/1/2014 12:00:00 AM,196.21,197.63,196.13,197.03,90321700,195.842926438709 +7/2/2014 12:00:00 AM,197.03,197.48,196.96,197.23,52316200,196.189691599827 +7/3/2014 12:00:00 AM,197.81,198.29,197.64,198.2,52894800,196.735773740487 +7/7/2014 12:00:00 AM,197.84,197.98,197.22,197.51,61676700,197.147066506331 +7/8/2014 12:00:00 AM,197.12,197.22,195.76,196.24,108055300,197.223920469747 +7/9/2014 12:00:00 AM,196.75,197.29,196.31,197.12,72953600,197.212534478006 +7/10/2014 12:00:00 AM,195.24,196.86,195.06,196.34,98922400,197.077339861820 +7/11/2014 12:00:00 AM,196.24,196.75,195.78,196.61,64226200,196.927761368559 +7/14/2014 12:00:00 AM,197.63,197.86,197.44,197.6,58563600,196.946879506303 +7/15/2014 12:00:00 AM,197.71,198.1,196.36,197.23,111297400,197.023072597013 +7/16/2014 12:00:00 AM,198.12,198.26,197.42,197.96,79978600,197.207258566234 +7/17/2014 12:00:00 AM,197.33,198.1,195.43,195.71,144412600,197.065321149345 +7/18/2014 12:00:00 AM,196.38,197.91,196.24,197.71,124256300,197.061243214430 +7/21/2014 12:00:00 AM,197.08,197.5,196.43,197.34,67480300,197.119016634943 +7/22/2014 12:00:00 AM,198.04,198.56,197.87,198.2,67612500,197.320488045876 +7/23/2014 12:00:00 AM,198.51,198.85,198.1,198.64,65545600,197.661604404863 +7/24/2014 12:00:00 AM,198.82,199.06,198.45,198.65,56417500,197.995926127431 +7/25/2014 12:00:00 AM,198.11,198.26,197.33,197.72,76782500,198.137211861432 +7/28/2014 12:00:00 AM,197.78,198.09,196.62,197.8,69106500,198.143046895333 +7/29/2014 12:00:00 AM,198.21,198.45,196.92,196.95,80408600,197.962285809406 +7/30/2014 12:00:00 AM,197.66,197.91,196.16,196.98,104105100,197.704463601417 +7/31/2014 12:00:00 AM,195.63,195.78,192.97,193.09,183073500,195.390825055225 +8/1/2014 12:00:00 AM,192.58,193.76,191.57,192.5,189075200,193.639142603931 +8/4/2014 12:00:00 AM,192.87,194.3,192.05,193.89,91108400,193.015442208341 +8/5/2014 12:00:00 AM,193.11,193.6,191.31,192.01,152557200,192.560489908027 +8/6/2014 12:00:00 AM,191.08,192.89,191.08,192.07,94628200,192.262793058203 +8/7/2014 12:00:00 AM,192.96,193.13,190.55,191.03,135507800,191.761274250600 +8/8/2014 12:00:00 AM,191.43,193.37,190.95,193.24,116999400,191.837246493476 +8/11/2014 12:00:00 AM,193.99,194.66,193.71,193.79,74451200,192.325324535637 +8/12/2014 12:00:00 AM,193.63,194.15,192.94,193.53,73605400,192.747543002570 +8/13/2014 12:00:00 AM,194.3,195.06,193.96,194.84,68961600,193.443741272019 +8/14/2014 12:00:00 AM,195.19,195.76,194.98,195.76,57228200,194.384081443413 +8/15/2014 12:00:00 AM,196.49,196.65,194.31,195.72,139872000,195.048037323610 +8/18/2014 12:00:00 AM,196.81,197.45,196.69,197.36,75188600,196.061495973338 +8/19/2014 12:00:00 AM,197.85,198.54,197.44,198.39,58964600,197.228636079637 +8/20/2014 12:00:00 AM,198.15,199.16,198.08,198.92,72725600,198.156230141213 +8/21/2014 12:00:00 AM,199.06,199.76,198.93,199.5,67745800,198.884037817465 +8/22/2014 12:00:00 AM,199.32,199.69,198.74,199.19,76067700,199.247722035620 +8/25/2014 12:00:00 AM,200.16,200.59,199.15,200.2,63806000,199.628191588772 +8/26/2014 12:00:00 AM,200.35,200.82,200.28,200.33,47256100,199.948720877419 +8/27/2014 12:00:00 AM,200.45,200.57,199.94,200.25,47820600,200.157207171355 +8/28/2014 12:00:00 AM,199.59,200.27,199.39,200.14,58267500,200.263985786892 +8/29/2014 12:00:00 AM,200.44,200.73,199.82,200.71,65886200,200.383287551707 +9/2/2014 12:00:00 AM,200.97,200.99,199.86,200.61,72322600,200.491767030516 +9/3/2014 12:00:00 AM,201.35,201.41,200.22,200.5,57371400,200.558365688921 +9/4/2014 12:00:00 AM,200.86,201.58,199.66,200.21,85000300,200.546015392440 +9/5/2014 12:00:00 AM,200.19,201.19,199.41,201.11,102015100,200.616234391061 +9/8/2014 12:00:00 AM,200.94,201.21,200,200.59,64102500,200.666540876288 +9/9/2014 12:00:00 AM,200.42,200.55,198.91,199.32,88482500,200.501841343297 +9/10/2014 12:00:00 AM,199.46,200.2,198.77,200.07,67154300,200.326497042687 +9/11/2014 12:00:00 AM,199.28,200.33,199.12,200.3,66737400,200.230194843711 +9/12/2014 12:00:00 AM,200.12,200.12,198.56,199.13,117408300,200.032434091336 +9/15/2014 12:00:00 AM,199.17,199.32,198.38,198.98,76357300,199.761617779716 +9/16/2014 12:00:00 AM,198.64,200.84,198.5,200.48,116043200,199.708744126373 +9/17/2014 12:00:00 AM,200.8,201.68,199.75,200.75,151153900,199.856743611298 +9/18/2014 12:00:00 AM,201.36,201.85,201.1,201.82,94940000,200.343636657759 +9/19/2014 12:00:00 AM,201.53,201.9,200.29,200.7,121449500,200.657036475268 +9/22/2014 12:00:00 AM,200.33,200.38,198.73,199.15,125433400,200.470757734893 +9/23/2014 12:00:00 AM,198.41,199.26,197.95,198.01,111088300,199.655709578430 +9/24/2014 12:00:00 AM,198.06,199.69,197.52,199.56,107137500,199.264806812164 +9/25/2014 12:00:00 AM,199.05,199.05,196.27,196.34,150009700,198.114071945050 +9/26/2014 12:00:00 AM,196.7,198.39,196.42,197.9,103505800,197.597557453495 +9/29/2014 12:00:00 AM,196.18,197.89,196.05,197.54,95085900,197.395106738589 +9/30/2014 12:00:00 AM,197.7,198.3,196.61,197.02,130138700,197.265840078670 +10/1/2014 12:00:00 AM,196.68,196.77,193.91,194.35,177612400,196.105619098941 +10/2/2014 12:00:00 AM,194.18,195.05,192.35,194.38,157170400,195.227229506183 +10/3/2014 12:00:00 AM,195.71,196.94,195.08,196.52,121466200,195.077563341323 +10/6/2014 12:00:00 AM,197.36,197.6,195.58,196.29,104737900,195.238122427498 +10/7/2014 12:00:00 AM,195.29,195.72,193.22,193.26,147603600,194.791360306270 +10/8/2014 12:00:00 AM,193.36,196.92,192.36,196.64,186054900,195.104301363507 +10/9/2014 12:00:00 AM,196.36,196.6,192.58,192.74,209978700,194.497943777516 +10/10/2014 12:00:00 AM,192.7,193.65,190.49,190.54,221648200,192.573333575508 +10/13/2014 12:00:00 AM,190.47,191.15,187.3,187.41,230050200,189.264998098935 +10/14/2014 12:00:00 AM,188.46,189.82,187.04,187.7,215307000,187.943441567104 +10/15/2014 12:00:00 AM,185.19,187.69,181.92,186.43,380336300,186.998677534993 +10/16/2014 12:00:00 AM,183.05,187.58,182.89,186.27,270175000,186.461014001252 +10/17/2014 12:00:00 AM,188.42,189.75,187.62,188.47,214253300,186.510468181116 +10/20/2014 12:00:00 AM,188.12,190.45,188.07,190.3,129599500,187.604281916997 +10/21/2014 12:00:00 AM,191.7,194.2,191.48,194.07,154476400,191.114690971361 +10/22/2014 12:00:00 AM,194.44,194.91,192.61,192.69,151477500,192.565105444800 +10/23/2014 12:00:00 AM,194.64,196.2,194.26,194.93,154681700,193.794662827283 +10/24/2014 12:00:00 AM,195.23,196.49,194.49,196.43,116840100,195.178086446185 +10/27/2014 12:00:00 AM,195.75,196.45,195.03,196.16,82755000,195.920642651966 +10/28/2014 12:00:00 AM,196.84,198.42,196.73,198.41,106688000,197.071598993331 +10/29/2014 12:00:00 AM,198.59,199.12,196.8,198.11,142365300,197.758805426053 +10/30/2014 12:00:00 AM,197.59,199.61,197.4,199.38,113026700,198.469392454351 +10/31/2014 12:00:00 AM,201.78,201.82,200.77,201.66,146857100,199.906821253401 +11/3/2014 12:00:00 AM,201.92,202.45,201.3,201.77,93539900,200.933436527224 +11/4/2014 12:00:00 AM,201.22,201.6,200.06,201.07,93177300,201.401483522831 +11/5/2014 12:00:00 AM,202.56,202.59,201.45,202.34,91468900,201.772591596234 +11/6/2014 12:00:00 AM,202.41,203.26,201.64,203.15,106742100,202.245639452146 +11/7/2014 12:00:00 AM,203.17,203.6,202.61,203.34,89472200,202.678255715290 +11/10/2014 12:00:00 AM,203.4,204.04,203.13,203.98,65917600,203.129222612079 +11/11/2014 12:00:00 AM,204.07,204.31,203.65,204.18,54299100,203.525086871833 +11/12/2014 12:00:00 AM,203.35,204.24,203.31,203.96,89967500,203.805874452942 +11/13/2014 12:00:00 AM,204.14,204.83,203.21,204.19,84991500,204.009658796674 +11/14/2014 12:00:00 AM,204.13,204.49,203.72,204.24,80335200,204.154676626175 +11/17/2014 12:00:00 AM,203.85,204.58,203.65,204.37,80377300,204.267331312621 +11/18/2014 12:00:00 AM,204.46,205.92,204.44,205.55,75891900,204.517892764766 +11/19/2014 12:00:00 AM,205.3,205.55,204.3,205.22,82229900,204.780441365297 +11/20/2014 12:00:00 AM,204.25,205.71,204.18,205.58,72589800,205.045409524141 +11/21/2014 12:00:00 AM,207.6,207.84,205.98,206.68,142173900,205.430102365324 +11/24/2014 12:00:00 AM,207.19,207.39,206.91,207.26,65675200,205.922701601062 +11/25/2014 12:00:00 AM,207.54,207.79,206.8,207.11,79019800,206.379545428018 +11/26/2014 12:00:00 AM,207.27,207.76,207.03,207.64,56385900,206.809422962135 +11/28/2014 12:00:00 AM,207.52,207.87,206.91,207.2,57890100,207.102524225571 +12/1/2014 12:00:00 AM,206.4,206.54,205.38,205.76,103806900,207.059751279357 +12/2/2014 12:00:00 AM,205.8,207.34,205.78,207.09,74456200,207.007480210850 +12/3/2014 12:00:00 AM,207.28,208.15,207.1,207.89,68873500,207.115091429680 +12/4/2014 12:00:00 AM,207.55,208.26,206.7,207.66,91225300,207.279987586817 +12/5/2014 12:00:00 AM,207.88,208.47,207.55,208,90989800,207.485064772917 +12/8/2014 12:00:00 AM,207.55,208.12,205.93,206.61,108465100,207.480071952543 +12/9/2014 12:00:00 AM,204.37,206.6,203.91,206.47,125039000,207.309593524775 +12/10/2014 12:00:00 AM,205.94,205.98,202.93,203.16,159237100,206.178384800747 +12/11/2014 12:00:00 AM,203.89,206.19,203.71,204.19,158628800,205.335854752281 +12/12/2014 12:00:00 AM,202.65,203.82,200.85,200.89,202123800,203.602338220616 +12/15/2014 12:00:00 AM,202,202.53,198.78,199.51,189556900,201.653689517499 +12/16/2014 12:00:00 AM,198.55,202.4,197.86,197.91,258910900,199.708707996494 +12/17/2014 12:00:00 AM,198.48,202.34,198.29,201.79,252523700,199.381180740188 +12/18/2014 12:00:00 AM,204.78,212.97,203.92,206.78,256995300,202.701686386831 +12/19/2014 12:00:00 AM,206.46,207.33,205.61,206.52,243364900,204.794619819406 +12/22/2014 12:00:00 AM,206.71,207.47,206.46,207.47,148194100,206.208434881170 +12/23/2014 12:00:00 AM,208.2,208.23,207.4,207.75,120621800,207.079756627882 +12/24/2014 12:00:00 AM,208.03,208.34,207.72,207.77,42963400,207.569669899883 +12/26/2014 12:00:00 AM,208.29,208.85,208.25,208.44,57211900,207.940724922975 +12/29/2014 12:00:00 AM,208.25,208.97,208.14,208.72,79532000,208.249346873576 +12/30/2014 12:00:00 AM,208.21,208.37,207.51,207.6,73448300,208.330135495230 +12/31/2014 12:00:00 AM,207.96,208.19,205.39,205.54,130281700,207.958642820624 +1/2/2015 12:00:00 AM,206.39,206.88,204.18,205.43,121408500,207.350373141658 +1/5/2015 12:00:00 AM,204.2,204.37,201.35,201.72,169440600,205.454610987886 +1/6/2015 12:00:00 AM,202.13,202.72,198.85,199.82,208923900,202.947560202961 +1/7/2015 12:00:00 AM,201.46,202.72,200.88,202.31,125069600,201.755879947690 +1/8/2015 12:00:00 AM,204,206.16,203.99,205.9,146056100,202.437907550032 +1/9/2015 12:00:00 AM,206.39,206.42,203.51,204.25,157609800,203.056232404816 +1/12/2015 12:00:00 AM,204.42,204.6,201.92,202.65,144060200,203.291663187962 +1/13/2015 12:00:00 AM,204.15,205.48,200.51,202.08,214372200,203.174861003877 +1/14/2015 12:00:00 AM,199.67,201.1,198.57,200.86,192575000,202.703796156687 +1/15/2015 12:00:00 AM,201.64,202.01,198.88,199.02,175449000,201.609195969251 +1/16/2015 12:00:00 AM,198.75,201.82,198.55,201.63,211716100,201.043867469494 +1/20/2015 12:00:00 AM,202.42,202.72,200.17,202.05,130876700,200.947698654915 +1/21/2015 12:00:00 AM,201.51,203.66,200.94,203.08,122704300,201.251553406946 +1/22/2015 12:00:00 AM,204.02,206.26,202.33,206.1,173707900,202.687188678700 +1/23/2015 12:00:00 AM,205.8,206.1,204.81,204.97,117357700,203.708358727652 +1/26/2015 12:00:00 AM,204.73,205.56,203.85,205.45,91710100,204.445023344084 +1/27/2015 12:00:00 AM,203,204.12,201.74,202.74,133646200,204.562656956810 +1/28/2015 12:00:00 AM,204.16,204.29,199.91,200.14,167686500,203.507964071928 +1/29/2015 12:00:00 AM,200.34,202.3,198.68,201.99,173312500,202.747055068916 +1/30/2015 12:00:00 AM,200.56,202.17,199.13,199.45,197508500,201.771928010511 +2/2/2015 12:00:00 AM,200.07,202.03,197.86,201.92,162707100,201.301634555992 +2/3/2015 12:00:00 AM,203.02,204.85,202.55,204.84,123867400,201.936522050826 +2/4/2015 12:00:00 AM,203.94,205.38,203.51,204.06,133968500,202.591921004691 +2/5/2015 12:00:00 AM,204.83,206.3,204.77,206.12,97731200,203.673030245375 +2/6/2015 12:00:00 AM,206.57,207.24,204.92,205.55,125590100,204.480614250801 +2/9/2015 12:00:00 AM,204.77,205.64,204.13,204.63,87084200,204.899586500646 +2/10/2015 12:00:00 AM,205.89,207.12,204.68,206.81,96142600,205.374880064120 +2/11/2015 12:00:00 AM,206.6,207.45,205.83,206.93,90227200,205.862832698325 +2/12/2015 12:00:00 AM,207.91,208.99,206.97,208.92,97226900,206.782572486749 +2/13/2015 12:00:00 AM,209.08,209.84,208.76,209.78,93617500,207.878135081180 +2/17/2015 12:00:00 AM,209.38,210.32,209.1,210.11,76896000,208.810397777952