Compare commits

...

84 Commits
16632 ... 16614

Author SHA1 Message Date
Jhonathan Abreu
693e602f68 Empty-Commit 2024-09-05 11:10:15 -04:00
Jhonathan Abreu
bde37855b4 Minor greeks fix 2024-09-05 10:54:23 -04:00
Jhonathan Abreu
cfd3b2f1d1 Address peer review 2024-09-05 09:22:38 -04:00
Jhonathan Abreu
3327576704 Cleanup and tests 2024-09-04 16:31:36 -04:00
Jhonathan Abreu
2beb276a35 Lazily parse greeks on individual access 2024-09-04 15:45:35 -04:00
Jhonathan Abreu
b4d1cbcd5c Build fix 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
745d15174e Minor fix in symbols and sid cache cleanup 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
f6265b6762 Limit Symbols and SIDs cache size to help with memory usage 2024-09-04 15:45:34 -04:00
Martin Molinero
14b05a1121 Minor performance improvements reduce garbage 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
dc0426e6c4 Address peer review 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
2a86c3abb1 Return actual underlying symbol when mapping decomposing ICO ticker 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
1d78a5fb48 Abstract symbols cache to BaseDataCollection 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
72c6593643 Use cached underlying SID when parsing from string 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
7350b05ee3 Fix index option creation in OptionUniverse 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
424ad70d75 Cleanup 2024-09-04 15:45:34 -04:00
Jhonathan Abreu
28fc0b257a Cache symbols in OptionUniverse 2024-09-04 15:45:33 -04:00
Jhonathan Abreu
69dde04f76 Minor changes and test fixes 2024-09-04 15:45:33 -04:00
Jhonathan Abreu
d535eb8431 Minor build fix 2024-09-04 15:45:33 -04:00
Jhonathan Abreu
a1afe727c1 Memory usage improvements 2024-09-04 15:45:33 -04:00
Jhonathan Abreu
ee0f6193f9 Address peer review 2024-09-04 15:45:33 -04:00
Jhonathan Abreu
e8a5ba6303 Minor change 2024-09-04 15:45:32 -04:00
Jhonathan Abreu
c9701ab6f0 Update index options regression algorithms stats 2024-09-04 15:45:32 -04:00
Jhonathan Abreu
5d87988198 Keep underlying when aggregating collections in BaseDataCollectionAggregatorEnumerator 2024-09-04 15:45:32 -04:00
Jhonathan Abreu
b7a206b3f7 Fix for live trading options universe selection 2024-09-04 15:45:32 -04:00
Jhonathan Abreu
e4dc1470da Minor change 2024-09-04 15:45:32 -04:00
Jhonathan Abreu
8b6fb2f66e Minor change 2024-09-04 15:45:31 -04:00
Jhonathan Abreu
6281617427 Fix: set data time zone to same as exchange tz for options universes 2024-09-04 15:45:31 -04:00
Jhonathan Abreu
2cbd013ff7 Minor regression tests updates after rebase 2024-09-04 15:45:31 -04:00
Jhonathan Abreu
82eb904370 Self review and cleanup 2024-09-04 15:45:31 -04:00
Jhonathan Abreu
7df5953ef9 Add universe files 2024-09-04 15:45:31 -04:00
Jhonathan Abreu
434b80e104 Regression tests updates after rebasing from master 2024-09-04 15:45:31 -04:00
Jhonathan Abreu
51b5c5cf58 Some regression algorithms and unit tests cleanup 2024-09-04 15:45:30 -04:00
Jhonathan Abreu
2a05d381c2 Cleanup 2024-09-04 15:45:30 -04:00
Jhonathan Abreu
ab8b5ec498 Implied volatility calculation improvements
- Adjust root finding method accuracy as a factor of the option price
- Use BSM to get a first guess
2024-09-04 15:45:30 -04:00
Jhonathan Abreu
72b05041da Use double in price option numerical models 2024-09-04 15:45:30 -04:00
Jhonathan Abreu
74cdc80d16 Add helper method con calculate time till expiration 2024-09-04 15:45:30 -04:00
Jhonathan Abreu
1dc9411ac9 [TEST] 2024-09-04 15:45:30 -04:00
Jhonathan Abreu
d4da6a1189 Update default dividend yield provider depending on option type 2024-09-04 15:45:29 -04:00
Jhonathan Abreu
34ed54be68 Revert array pool change for option pricing numerical models 2024-09-04 15:45:29 -04:00
Jhonathan Abreu
51e64f88ae Greeks numerical models performance improvements 2024-09-04 15:45:29 -04:00
Jhonathan Abreu
5fb29b170e Greeks numerical models performance improvements 2024-09-04 15:45:29 -04:00
Jhonathan Abreu
31830d5df3 Minor tests updates 2024-09-04 15:45:29 -04:00
Jhonathan Abreu
491a5153f9 Minor performance improvement.
Reduce greeks binomial model steps to 140
2024-09-04 15:45:29 -04:00
Jhonathan Abreu
2ddd2671fd Add more assertions to new options filter api regression algorithms 2024-09-04 15:45:29 -04:00
Jhonathan Abreu
65aa678492 Address peer review 2024-09-04 15:45:28 -04:00
Jhonathan Abreu
87cb2d85e1 Address peer review 2024-09-04 15:45:28 -04:00
Jhonathan Abreu
05bd18aae1 Added options greeks data and updated regression algorithms 2024-09-04 15:45:27 -04:00
Jhonathan Abreu
94be25241c Add regression algorithms for new options filter universe api methods 2024-09-04 15:45:27 -04:00
Jhonathan Abreu
c482ad63aa Add OptionUniverse history regression algorithms 2024-09-04 15:45:26 -04:00
Jhonathan Abreu
d3fd0fe73d Option filter universe api updates 2024-09-04 15:45:26 -04:00
Jhonathan Abreu
aeabec965d Update options filter universe API to use OptionUniverse data
Add new filter methods for greeks, IV and open interest
2024-09-04 15:45:26 -04:00
Jhonathan Abreu
de7f30c02a Minor change 2024-09-04 15:45:26 -04:00
Jhonathan Abreu
61c9023f94 Fix thread-safety violation in Slice class 2024-09-04 15:45:25 -04:00
Jhonathan Abreu
6da36528ed Added processed data provider 2024-09-04 15:45:25 -04:00
Jhonathan Abreu
de7967b047 Minor changes 2024-09-04 15:45:25 -04:00
Jhonathan Abreu
97674e8037 Option chain handling in live trading data feed 2024-09-04 15:45:25 -04:00
Jhonathan Abreu
1118ba279c Minor changes 2024-09-04 15:45:25 -04:00
Jhonathan Abreu
ee039901bb Unit test fixes 2024-09-04 15:45:25 -04:00
Jhonathan Abreu
2e67f3e729 Data fixes and regression algos stats update 2024-09-04 15:45:25 -04:00
Jhonathan Abreu
98762ead76 Update regression algorithms stats 2024-09-04 15:45:24 -04:00
Jhonathan Abreu
4e6b682e48 Update regression algorithms stats 2024-09-04 15:45:24 -04:00
Jhonathan Abreu
6eb4fc35d3 Added option universe csv header property 2024-09-04 15:45:24 -04:00
Jhonathan Abreu
05bdfb2e18 Round option indicators values 2024-09-04 15:45:24 -04:00
Jhonathan Abreu
78f01039a9 Fix option chain provider history request 2024-09-04 15:45:24 -04:00
Jhonathan Abreu
065cdedc98 Update regression algorithms stats and minor fixes 2024-09-04 15:45:23 -04:00
Jhonathan Abreu
1c43efadbc Update regression algorithm stats 2024-09-04 15:45:23 -04:00
Jhonathan Abreu
6b4811a607 Peer recommended changes and fixes 2024-09-04 15:45:23 -04:00
Jhonathan Abreu
81ef05ac22 Minor changes 2024-09-04 15:45:23 -04:00
Jhonathan Abreu
553cebaae0 Minor changes 2024-09-04 15:45:22 -04:00
Jhonathan Abreu
b1c16a1f1f Fix universe selection subscriptions start time to not include extended market hours 2024-09-04 15:45:22 -04:00
Jhonathan Abreu
dcac0d4272 Fix symbols parsing in OptionUniverse 2024-09-04 15:45:22 -04:00
Jhonathan Abreu
108f2cacc5 Address peer review 2024-09-04 15:45:22 -04:00
Jhonathan Abreu
c2c7072278 Address peer review 2024-09-04 15:45:21 -04:00
Jhonathan Abreu
603e14897b Allow canonical option history requests 2024-09-04 15:45:21 -04:00
Jhonathan Abreu
d9501b5bec Option chain provider with new options universe 2024-09-04 15:45:21 -04:00
Jhonathan Abreu
2c6e8d5038 Updated options regression algorithms stats for new universe data 2024-09-04 15:45:21 -04:00
Jhonathan Abreu
e68e7cdaf8 Updated options regression algorithms stats for new universe data 2024-09-04 15:45:20 -04:00
Jhonathan Abreu
3e58dd27b5 Updated options regression algorithms stats for new universe data 2024-09-04 15:45:20 -04:00
Jhonathan Abreu
e3f7bf674c Updated options regression algorithms stats for new universe data 2024-09-04 15:45:20 -04:00
Jhonathan Abreu
1626b3f85a Updated options regression algorithms stats for new universe data 2024-09-04 15:45:20 -04:00
Jhonathan Abreu
d7b702d58c File based options universe fixes and improvements.
- Adjust OptionUniverse start-end times and period.
- Adapt unit tests and some algorithms to pass with new options universe selection.
2024-09-04 15:45:20 -04:00
Jhonathan Abreu
a8528eb208 Address peer review 2024-09-04 15:45:20 -04:00
Jhonathan Abreu
3cc6919ce0 Options universe improvements 2024-09-04 15:45:20 -04:00
Jhonathan Abreu
eacc655274 Initial options universe with greeks implementation 2024-09-04 15:45:19 -04:00
278 changed files with 62467 additions and 1028 deletions

View File

@@ -90,7 +90,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -87,7 +87,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -55,10 +55,10 @@ namespace QuantConnect.Algorithm.CSharp
{
_optionFilterRan = true;
var expiry = new HashSet<DateTime>(optionContracts.Select(x => x.Underlying.ID.Date)).SingleOrDefault();
// Cast to IEnumerable<Symbol> because OptionFilterContract overrides some LINQ operators like `Select` and `Where`
var expiry = new HashSet<DateTime>(optionContracts.Select(x => x.Symbol.Underlying.ID.Date)).SingleOrDefault();
// Cast to List<Symbol> because OptionFilterContract overrides some LINQ operators like `Select` and `Where`
// and cause it to mutate the underlying Symbol collection when using those operators.
var symbol = new HashSet<Symbol>(((IEnumerable<Symbol>)optionContracts).Select(x => x.Underlying)).SingleOrDefault();
var symbol = new HashSet<Symbol>(((List<Symbol>)optionContracts).Select(x => x.Underlying)).SingleOrDefault();
if (expiry == null || symbol == null)
{

View File

@@ -122,7 +122,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -174,7 +174,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 2;
/// <summary>
/// Final status of the algorithm

View File

@@ -121,7 +121,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -13,7 +13,6 @@
* limitations under the License.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using QuantConnect.Data.UniverseSelection;
@@ -59,19 +58,9 @@ namespace QuantConnect.Algorithm.CSharp
var changeOptions = changes.AddedSecurities.Concat(changes.RemovedSecurities)
.Where(s => s.Type == SecurityType.Option);
// Susbtract one minute to get the actual market open. If market open is at 9:30am, this will be invoked at 9:31am
var expectedTime = Time.TimeOfDay - TimeSpan.FromMinutes(1);
var allOptionsWereChangedOnMarketOpen = changeOptions.All(s =>
if (Time != Time.Date)
{
var firstMarketSegment = s.Exchange.Hours.MarketHours[Time.DayOfWeek].Segments
.First(segment => segment.State == MarketHoursState.Market);
return firstMarketSegment.Start == expectedTime;
});
if (!allOptionsWereChangedOnMarketOpen)
{
throw new RegressionTestException("Expected options filter to be run only on market open");
throw new RegressionTestException($"Expected options filter to be run only at midnight. Actual was {Time}");
}
}
@@ -88,7 +77,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all time slices of algorithm
/// </summary>
public long DataPoints => 5952220;
public long DataPoints => 470217;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -35,14 +35,15 @@ namespace QuantConnect.Algorithm.CSharp
private readonly HashSet<Symbol> _expectedData = new HashSet<Symbol>();
private readonly HashSet<Symbol> _expectedUniverses = new HashSet<Symbol>();
private bool _expectUniverseSubscription;
private DateTime _universeSubscriptionTime;
// order of expected contract additions as price moves
private int _expectedContractIndex;
private readonly List<Symbol> _expectedContracts = new List<Symbol>
{
SymbolRepresentation.ParseOptionTickerOSI("GOOG 151224P00747500"),
SymbolRepresentation.ParseOptionTickerOSI("GOOG 151224P00750000"),
SymbolRepresentation.ParseOptionTickerOSI("GOOG 151224P00752500")
SymbolRepresentation.ParseOptionTickerOSI("GOOG 151224P00752500"),
SymbolRepresentation.ParseOptionTickerOSI("GOOG 151224P00755000")
};
public override void Initialize()
@@ -68,7 +69,7 @@ namespace QuantConnect.Algorithm.CSharp
Log($"SubscriptionManager.Subscriptions: {string.Join(" -- ", SubscriptionManager.Subscriptions)}");
throw new RegressionTestException($"Unexpected {OptionChainSymbol} subscription presence");
}
if (!slice.ContainsKey(Underlying))
if (Time != _universeSubscriptionTime && !slice.ContainsKey(Underlying))
{
// TODO : In fact, we're unable to properly detect whether or not we auto-added or it was manually added
// this is because when we auto-add the underlying we don't mark it as an internal security like we do with other auto adds
@@ -91,7 +92,7 @@ namespace QuantConnect.Algorithm.CSharp
var actual = string.Join(Environment.NewLine, UniverseManager.Keys.OrderBy(s => s.ToString()));
throw new RegressionTestException($"{Time}:: Detected differences in expected and actual universes{Environment.NewLine}Expected:{Environment.NewLine}{expected}{Environment.NewLine}Actual:{Environment.NewLine}{actual}");
}
if (_expectedData.AreDifferent(slice.Keys.ToHashSet()))
if (Time != _universeSubscriptionTime && _expectedData.AreDifferent(slice.Keys.ToHashSet()))
{
var expected = string.Join(Environment.NewLine, _expectedData.OrderBy(s => s.ToString()));
var actual = string.Join(Environment.NewLine, slice.Keys.OrderBy(s => s.ToString()));
@@ -99,7 +100,7 @@ namespace QuantConnect.Algorithm.CSharp
}
// 10AM add GOOG option chain
if (Time.TimeOfDay.Hours == 10 && Time.TimeOfDay.Minutes == 0)
if (Time.TimeOfDay.Hours == 10 && Time.TimeOfDay.Minutes == 0 && !_expectUniverseSubscription)
{
if (Securities.ContainsKey(OptionChainSymbol))
{
@@ -110,9 +111,9 @@ namespace QuantConnect.Algorithm.CSharp
googOptionChain.SetFilter(u =>
{
// we added the universe at 10, the universe selection data should not be from before
if (u.Underlying.EndTime.Hour < 10)
if (u.LocalTime.Hour < 10)
{
throw new RegressionTestException($"Unexpected underlying data point {u.Underlying.EndTime} {u.Underlying}");
throw new RegressionTestException($"Unexpected selection time {u.LocalTime}");
}
// find first put above market price
return u.IncludeWeeklys()
@@ -124,6 +125,7 @@ namespace QuantConnect.Algorithm.CSharp
_expectedSecurities.Add(OptionChainSymbol);
_expectedUniverses.Add(OptionChainSymbol);
_expectUniverseSubscription = true;
_universeSubscriptionTime = Time;
}
// 11:30AM remove GOOG option chain
@@ -151,7 +153,7 @@ namespace QuantConnect.Algorithm.CSharp
var expectedContract = _expectedContracts[_expectedContractIndex];
if (added.Symbol != expectedContract)
{
throw new RegressionTestException($"Expected option contract {expectedContract} to be added but received {added.Symbol}");
throw new RegressionTestException($"Expected option contract {expectedContract.Value} to be added but received {added.Symbol}");
}
_expectedContractIndex++;
@@ -186,7 +188,7 @@ namespace QuantConnect.Algorithm.CSharp
if (Securities.ContainsKey(Underlying))
{
Console.WriteLine($"{Time:o}:: PRICE:: {Securities[Underlying].Price} CHANGES:: {changes}");
Log($"{Time:o}:: PRICE:: {Securities[Underlying].Price} CHANGES:: {changes}");
}
}
@@ -203,7 +205,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 200807;
public long DataPoints => 3502;
/// <summary>
/// Data Points count of the algorithm history
@@ -227,7 +229,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Drawdown", "0%"},
{"Expectancy", "0"},
{"Start Equity", "100000"},
{"End Equity", "99079"},
{"End Equity", "98784"},
{"Net Profit", "0%"},
{"Sharpe Ratio", "0"},
{"Sortino Ratio", "0"},
@@ -243,10 +245,10 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$6.00"},
{"Estimated Strategy Capacity", "$3000.00"},
{"Lowest Capacity Asset", "GOOCV 305RBR0BSWIX2|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "1.49%"},
{"OrderListHash", "bd115ec8bb7734b1561d6a6cc6c00039"}
{"Estimated Strategy Capacity", "$4000.00"},
{"Lowest Capacity Asset", "GOOCV 305RBQ2BZBZT2|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "2.58%"},
{"OrderListHash", "09f766c470a8bcf4bb6862da52bf25a7"}
};
}
}

View File

@@ -106,7 +106,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -296,7 +296,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 1267414;
public long DataPoints => 27071;
/// <summary>
/// Data Points count of the algorithm history
@@ -316,7 +316,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Total Orders", "3"},
{"Average Win", "0%"},
{"Average Loss", "-0.40%"},
{"Compounding Annual Return", "-22.717%"},
{"Compounding Annual Return", "-21.378%"},
{"Drawdown", "0.400%"},
{"Expectancy", "-1"},
{"Start Equity", "100000"},

View File

@@ -67,7 +67,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 378;
public override long DataPoints => 356;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -38,7 +38,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 2163;
public override long DataPoints => 1269;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -102,7 +102,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 471135;
public long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -142,7 +142,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$26.00"},
{"Estimated Strategy Capacity", "$70000.00"},
{"Estimated Strategy Capacity", "$69000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZERHAOVVQ|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "61.31%"},
{"OrderListHash", "35d406df401e5b27244e20f5ec57346e"}

View File

@@ -112,7 +112,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 471124;
public long DataPoints => 15130;
/// <summary>
/// Data Points count of the algorithm history
@@ -152,7 +152,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$543.40"},
{"Estimated Strategy Capacity", "$3000.00"},
{"Estimated Strategy Capacity", "$4000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZFMEBBB2E|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "338.60%"},
{"OrderListHash", "301c15063f6e269023d144ca69a765da"}

View File

@@ -109,7 +109,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 471124;
public long DataPoints => 15012;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -122,7 +122,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 339;
public long DataPoints => 308;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -14,7 +14,6 @@
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using QuantConnect.Data;
@@ -100,7 +99,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 1252633;
public long DataPoints => 12290;
/// <summary>
/// Data Points count of the algorithm history
@@ -120,7 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Total Orders", "2"},
{"Average Win", "0%"},
{"Average Loss", "-0.40%"},
{"Compounding Annual Return", "-21.622%"},
{"Compounding Annual Return", "-20.338%"},
{"Drawdown", "0.300%"},
{"Expectancy", "-1"},
{"Start Equity", "100000"},

View File

@@ -139,7 +139,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 1847643;
public long DataPoints => 17486;
/// <summary>
/// Data Points count of the algorithm history
@@ -157,32 +157,32 @@ namespace QuantConnect.Algorithm.CSharp
public Dictionary<string, string> ExpectedStatistics => new Dictionary<string, string>
{
{"Total Orders", "5"},
{"Average Win", "0.14%"},
{"Average Loss", "-0.28%"},
{"Compounding Annual Return", "-47.543%"},
{"Average Win", "0.13%"},
{"Average Loss", "-0.30%"},
{"Compounding Annual Return", "-46.395%"},
{"Drawdown", "1.600%"},
{"Expectancy", "0.502"},
{"Expectancy", "0.429"},
{"Start Equity", "100000"},
{"End Equity", "99178.50"},
{"Net Profit", "-0.821%"},
{"Sharpe Ratio", "-4.136"},
{"End Equity", "99149.50"},
{"Net Profit", "-0.850%"},
{"Sharpe Ratio", "-4.298"},
{"Sortino Ratio", "0"},
{"Probabilistic Sharpe Ratio", "17.155%"},
{"Probabilistic Sharpe Ratio", "15.319%"},
{"Loss Rate", "0%"},
{"Win Rate", "100%"},
{"Profit-Loss Ratio", "0.50"},
{"Alpha", "-0.855"},
{"Beta", "1.047"},
{"Annual Standard Deviation", "0.099"},
{"Profit-Loss Ratio", "0.43"},
{"Alpha", "-0.84"},
{"Beta", "0.986"},
{"Annual Standard Deviation", "0.098"},
{"Annual Variance", "0.01"},
{"Information Ratio", "-9.141"},
{"Information Ratio", "-9.299"},
{"Tracking Error", "0.091"},
{"Treynor Ratio", "-0.392"},
{"Treynor Ratio", "-0.428"},
{"Total Fees", "$4.00"},
{"Estimated Strategy Capacity", "$0"},
{"Lowest Capacity Asset", "AAPL R735QTJ8XC9X"},
{"Portfolio Turnover", "13.49%"},
{"OrderListHash", "2722fee93126736e03d66d7ab880b537"}
{"Portfolio Turnover", "13.50%"},
{"OrderListHash", "cf14a7ce9c86e6844051820fd4c9394c"}
};
}
}

View File

@@ -109,7 +109,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 32351;
public long DataPoints => 9504;
/// <summary>
/// Data Points count of the algorithm history
@@ -129,7 +129,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Total Orders", "5"},
{"Average Win", "0%"},
{"Average Loss", "-0.07%"},
{"Compounding Annual Return", "-12.496%"},
{"Compounding Annual Return", "-11.517%"},
{"Drawdown", "0.200%"},
{"Expectancy", "-1"},
{"Start Equity", "100000"},

View File

@@ -103,7 +103,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public virtual long DataPoints => 57869;
public virtual long DataPoints => 21467;
/// <summary>
/// Data Points count of the algorithm history
@@ -123,29 +123,29 @@ namespace QuantConnect.Algorithm.CSharp
{"Total Orders", "5"},
{"Average Win", "0%"},
{"Average Loss", "-0.69%"},
{"Compounding Annual Return", "59.804%"},
{"Compounding Annual Return", "54.478%"},
{"Drawdown", "0.400%"},
{"Expectancy", "-0.5"},
{"Start Equity", "1000000"},
{"End Equity", "1006025"},
{"Net Profit", "0.602%"},
{"Sharpe Ratio", "3.01"},
{"Sharpe Ratio", "2.62"},
{"Sortino Ratio", "0"},
{"Probabilistic Sharpe Ratio", "62.865%"},
{"Probabilistic Sharpe Ratio", "63.221%"},
{"Loss Rate", "50%"},
{"Win Rate", "50%"},
{"Profit-Loss Ratio", "0"},
{"Alpha", "0.249"},
{"Beta", "-0.033"},
{"Alpha", "0.067"},
{"Beta", "-0.013"},
{"Annual Standard Deviation", "0.004"},
{"Annual Variance", "0"},
{"Information Ratio", "-99.414"},
{"Tracking Error", "0.072"},
{"Treynor Ratio", "-0.382"},
{"Information Ratio", "-50.808"},
{"Tracking Error", "0.086"},
{"Treynor Ratio", "-0.725"},
{"Total Fees", "$0.00"},
{"Estimated Strategy Capacity", "$580000.00"},
{"Lowest Capacity Asset", "SPXW 31K54PVWHUJHQ|SPX 31"},
{"Portfolio Turnover", "0.48%"},
{"Portfolio Turnover", "0.40%"},
{"OrderListHash", "07a085baedb37bb7c8d460558ea77e88"}
};
}

View File

@@ -109,7 +109,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public virtual long DataPoints => 40968;
public virtual long DataPoints => 16680;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -48,7 +48,12 @@ namespace QuantConnect.Algorithm.CSharp
UniverseSettings.Resolution = Resolution.Minute;
SetStartDate(2014, 06, 04);
SetEndDate(2014, 06, 06);
// TWX is selected the 4th and 5th and aapl after that.
// If the algo ends on the 6th, TWX subscriptions will not be removed before OnEndOfAlgorithm is called:
// - 6th: AAPL is selected, TWX is removed but subscriptions are not removed because the securities are invested.
// - TWX and its options are liquidated.
// - 7th: Since options universe selection is daily now, TWX subscriptions are removed the next day (7th)
SetEndDate(2014, 06, 07);
var selectionUniverse = AddUniverse(enumerable => new[] { Time.Date <= new DateTime(2014, 6, 5) ? _twx : _aapl },
enumerable => new[] { Time.Date <= new DateTime(2014, 6, 5) ? _twx : _aapl });
@@ -157,7 +162,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 998464;
public long DataPoints => 18993;
/// <summary>
/// Data Points count of the algorithm history
@@ -197,8 +202,8 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0.048"},
{"Treynor Ratio", "0.172"},
{"Total Fees", "$16.10"},
{"Estimated Strategy Capacity", "$3100000.00"},
{"Lowest Capacity Asset", "AOL VRKS95ENLBYE|AOL R735QTJ8XC9X"},
{"Estimated Strategy Capacity", "$5000000.00"},
{"Lowest Capacity Asset", "AOL R735QTJ8XC9X"},
{"Portfolio Turnover", "17.64%"},
{"OrderListHash", "a8605c1f5a9c67f60f1ddc963ec45542"}
};

View File

@@ -70,7 +70,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -136,7 +136,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -52,7 +52,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -92,7 +92,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$26.00"},
{"Estimated Strategy Capacity", "$70000.00"},
{"Estimated Strategy Capacity", "$69000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZERHAOVVQ|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "30.35%"},
{"OrderListHash", "615c795b0c450cb8e4c3cba803ebb180"}

View File

@@ -331,7 +331,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 471135;
public long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -97,7 +97,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -97,7 +97,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -106,7 +106,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 463141;
public long DataPoints => 7029;
/// </summary>
/// Data Points count of the algorithm history

View File

@@ -64,7 +64,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 5280;
public long DataPoints => 2862;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -110,7 +110,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -128,7 +128,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -132,7 +132,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all time slices of algorithm
/// </summary>
public long DataPoints => 1839;
public long DataPoints => 1461;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -52,7 +52,7 @@ namespace QuantConnect.Algorithm.CSharp
var _twxOption = AddOption("TWX", Resolution.Minute);
_exchange = _twxOption.Exchange;
_twxOption.SetFilter((x) => x
.Contracts(c => c.Where(s => _contracts.Contains(s.Value))));
.Contracts(c => c.Where(s => _contracts.Contains(s.Symbol.Value))));
SetBenchmark(t => 1);
}
@@ -122,7 +122,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 1291113;
public long DataPoints => 70553;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -22,7 +22,7 @@ namespace QuantConnect.Algorithm.CSharp
{
public class FutureOptionIndicatorsRegressionAlgorithm : OptionIndicatorsRegressionAlgorithm
{
protected override string ExpectedGreeks { get; set; } = "Implied Volatility: 0.14089,Delta: 0.6308,Gamma: 0.00207,Vega: 5.61431,Theta: -0.48816,Rho: 0.02962";
protected override string ExpectedGreeks { get; set; } = "Implied Volatility: 0.14008,Delta: 0.63466,Gamma: 0.00209,Vega: 5.61442,Theta: -0.48254,Rho: 0.03098";
public override void Initialize()
{

View File

@@ -93,7 +93,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 1475;
public long DataPoints => 1483;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -123,7 +123,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -40,6 +40,11 @@ namespace QuantConnect.Algorithm.CSharp
/// </summary>
public override long DataPoints => 194;
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public override int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// This is used by the regression test system to indicate what the expected statistics are from running the algorithm
/// </summary>

View File

@@ -175,7 +175,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public virtual int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -161,7 +161,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -40,6 +40,11 @@ namespace QuantConnect.Algorithm.CSharp
/// </summary>
public override long DataPoints => 184;
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public override int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// This is used by the regression test system to indicate what the expected statistics are from running the algorithm
/// </summary>

View File

@@ -183,7 +183,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public virtual int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -190,7 +190,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -174,7 +174,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -92,7 +92,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 160;
public long DataPoints => 106;
/// <summary>
/// Data Points count of the algorithm history
@@ -111,31 +111,31 @@ namespace QuantConnect.Algorithm.CSharp
{
{"Total Orders", "4"},
{"Average Win", "0%"},
{"Average Loss", "-20.28%"},
{"Average Loss", "-20.04%"},
{"Compounding Annual Return", "79228162514264337593543950335%"},
{"Drawdown", "2.100%"},
{"Expectancy", "-0.5"},
{"Start Equity", "100000"},
{"End Equity", "273533.3"},
{"Net Profit", "173.533%"},
{"Sharpe Ratio", "6.71649879978702E+27"},
{"End Equity", "274018.3"},
{"Net Profit", "174.018%"},
{"Sharpe Ratio", "6.74816637965336E+27"},
{"Sortino Ratio", "0"},
{"Probabilistic Sharpe Ratio", "95.428%"},
{"Loss Rate", "50%"},
{"Win Rate", "50%"},
{"Profit-Loss Ratio", "0"},
{"Alpha", "7.922816251426434E+28"},
{"Beta", "4.588"},
{"Annual Standard Deviation", "11.796"},
{"Annual Variance", "139.147"},
{"Information Ratio", "6.718097080548688E+27"},
{"Tracking Error", "11.793"},
{"Treynor Ratio", "1.726981543228595E+28"},
{"Beta", "4.566"},
{"Annual Standard Deviation", "11.741"},
{"Annual Variance", "137.844"},
{"Information Ratio", "6.749778840887739E+27"},
{"Tracking Error", "11.738"},
{"Treynor Ratio", "1.7351225556608623E+28"},
{"Total Fees", "$0.00"},
{"Estimated Strategy Capacity", "$8000.00"},
{"Estimated Strategy Capacity", "$7000.00"},
{"Lowest Capacity Asset", "NQX 31M220FF62ZSE|NDX 31"},
{"Portfolio Turnover", "6.51%"},
{"OrderListHash", "1d60b5da574b3e9bc78335b4af3aa772"}
{"Portfolio Turnover", "6.40%"},
{"OrderListHash", "ec6881b180c68e6c7a48f6596c73e83d"}
};
}
}

View File

@@ -188,7 +188,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -168,7 +168,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -191,7 +191,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -167,7 +167,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -186,7 +186,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 5983802;
public long DataPoints => 1575423;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -176,7 +176,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -145,7 +145,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all time slices of algorithm
/// </summary>
public long DataPoints => 1960;
public long DataPoints => 1108;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -119,7 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -111,7 +111,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 25;
public int AlgorithmHistoryDataPoints => 6;
/// <summary>
/// Final status of the algorithm

View File

@@ -147,7 +147,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 522277;
public long DataPoints => 20263;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -119,7 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -119,7 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -102,7 +102,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -102,7 +102,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -99,7 +99,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -109,7 +109,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -88,7 +88,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -88,7 +88,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 4490;
public override long DataPoints => 2298;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -131,7 +131,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 471124;
public long DataPoints => 15012;
/// <summary>
/// Data Points count of the algorithm history
@@ -171,7 +171,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$9.10"},
{"Estimated Strategy Capacity", "$1800000.00"},
{"Estimated Strategy Capacity", "$2600000.00"},
{"Lowest Capacity Asset", "GOOCV 30AKMEIPOSS1Y|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "7.50%"},
{"OrderListHash", "70487a4231ef2237ca24642be28652c4"}

View File

@@ -15,7 +15,6 @@
*/
using System.Collections.Generic;
using System;
using System.Linq;
using QuantConnect.Interfaces;
using QuantConnect.Data.UniverseSelection;
@@ -52,58 +51,45 @@ namespace QuantConnect.Algorithm.CSharp
public override void OnSecuritiesChanged(SecurityChanges changes)
{
if (++_securitiesChangedCount == 1)
{
// This is the underlying security addition
if (changes.AddedSecurities.Count != 1 || changes.RemovedSecurities.Count != 0)
{
throw new RegressionTestException("Unexpected security changes count: " +
"on the first OnSecuritiesChanged callback, we expect only the underlying to be added.");
}
if (changes.AddedSecurities[0].Symbol != _optionSymbol.Underlying)
{
throw new RegressionTestException("Unexpected security added: " +
"on the first OnSecuritiesChanged callback, we expect only the underlying to be added.");
}
}
else if (_securitiesChangedCount < 4)
if (++_securitiesChangedCount < 3)
{
// This is the universe selection, which we expect to happen twice, on market open of each day
// Check the time
var option = Securities[_optionSymbol];
var exchangeHours = option.Exchange.Hours;
var marketOpen = exchangeHours.GetNextMarketOpen(Time.Date, false);
if (Time.AddMinutes(-1) != marketOpen)
if (_securitiesChangedCount == 1)
{
throw new RegressionTestException($"Unexpected security changes time. Current time {Time}. Expected time: {marketOpen.AddMinutes(1)}");
var underlying = changes.AddedSecurities.Where(security => security.Symbol == _optionSymbol.Underlying).SingleOrDefault();
if (underlying == null)
{
throw new RegressionTestException("Unexpected security changes: on the first OnSecuritiesChanged callback, we expect the underlying to be added.");
}
}
// Check the changes
if (changes.AddedSecurities.Count == 0)
if (changes.AddedSecurities.Count <= 1)
{
throw new RegressionTestException("Unexpected security changes count: " +
"on second and third OnSecuritiesChanged callbacks we expect options to be added");
"on first and second OnSecuritiesChanged callbacks we expect options to be added");
}
if (changes.AddedSecurities.Any(security => !security.Symbol.HasCanonical() || security.Symbol.Canonical != _optionSymbol))
if (changes.AddedSecurities.Where(security => security.Symbol != _optionSymbol.Underlying)
.Any(security => !security.Symbol.HasCanonical() || security.Symbol.Canonical != _optionSymbol))
{
throw new RegressionTestException("Unexpected security added: " +
$"on second and third OnSecuritiesChanged callbacks we expect only {UnderlyingTicker} options to be added");
$"on first and second OnSecuritiesChanged callbacks we expect only {UnderlyingTicker} options to be added");
}
if (_securitiesChangedCount == 3)
if (_securitiesChangedCount == 2)
{
// The options added the previous day should be removed
if (changes.RemovedSecurities.Count != _previouslyAddedOptionsCount)
{
throw new RegressionTestException("Unexpected security changes count: " +
"on the third OnSecuritiesChanged callback we expect the previous day selection to be removed.");
"on the second OnSecuritiesChanged callback we expect the previous day selection to be removed.");
}
}
_previouslyAddedOptionsCount = changes.AddedSecurities.Count;
// Subtract 1 to account for the underlying
_previouslyAddedOptionsCount = changes.AddedSecurities.Count - 1;
}
else
{
@@ -113,7 +99,7 @@ namespace QuantConnect.Algorithm.CSharp
public override void OnEndOfAlgorithm()
{
if (_securitiesChangedCount != 3)
if (_securitiesChangedCount != 2)
{
throw new RegressionTestException($"Unexpected number of calls to OnSecuritiesChanged: {_securitiesChangedCount}. " +
"We expect only 3 OnSecuritiesChanged callbacks for this algorithm");
@@ -133,7 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 1814313;
public long DataPoints => 55702;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -107,7 +107,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 471135;
public long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -71,7 +71,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$11.50"},
{"Estimated Strategy Capacity", "$8800000.00"},
{"Estimated Strategy Capacity", "$13000000.00"},
{"Lowest Capacity Asset", "GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "7580.62%"},
{"OrderListHash", "5d8c976a405e1e5d1b19af0d1cdbf05d"}

View File

@@ -119,7 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public virtual long DataPoints => 471135;
public virtual long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -159,7 +159,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$11.50"},
{"Estimated Strategy Capacity", "$8800000.00"},
{"Estimated Strategy Capacity", "$13000000.00"},
{"Lowest Capacity Asset", "GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "7580.62%"},
{"OrderListHash", "ea13456d0c97785f9f2fc12842831990"}

View File

@@ -97,7 +97,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -271,7 +271,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -118,7 +118,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 470437;
public long DataPoints => 14325;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -100,7 +100,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of the algorithm history
/// </summary>
public int AlgorithmHistoryDataPoints => 0;
public int AlgorithmHistoryDataPoints => 1;
/// <summary>
/// Final status of the algorithm

View File

@@ -96,7 +96,7 @@ namespace QuantConnect.Algorithm.CSharp
protected override OptionFilterUniverse Filter(OptionFilterUniverse filter)
{
return filter.BackMonth().Contracts(filter.Take(15));
return filter.BackMonth().Contracts(contracts => contracts.Take(15));
}
}
@@ -113,7 +113,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 112808126;
public long DataPoints => 2155693;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -33,8 +33,7 @@ namespace QuantConnect.Algorithm.CSharp
private bool _firstOnDataCallDone;
private int _securityChangesCallCount;
private DateTime _selectionTimeUtc;
private bool _firstSelectionDone;
private int _selectedOptionsCount;
public override void Initialize()
@@ -49,9 +48,14 @@ namespace QuantConnect.Algorithm.CSharp
option.SetFilter(universe =>
{
if (_selectionTimeUtc == DateTime.MinValue)
if (!_firstSelectionDone)
{
_selectionTimeUtc = universe.LocalTime.ConvertToUtc(option.Exchange.TimeZone);
_firstSelectionDone = true;
if (universe.LocalTime.ConvertTo(option.Exchange.TimeZone, TimeZone) != StartDate)
{
throw new Exception("Option chain universe selection time was not the expected start date");
}
if (_firstOnDataCallDone)
{
@@ -74,6 +78,11 @@ namespace QuantConnect.Algorithm.CSharp
public override void OnData(Slice slice)
{
if (!IsMarketOpen(_optionSymbol.Underlying))
{
return;
}
if (!_firstOnDataCallDone)
{
_firstOnDataCallDone = true;
@@ -92,51 +101,31 @@ namespace QuantConnect.Algorithm.CSharp
public override void OnSecuritiesChanged(SecurityChanges changes)
{
Log($"{Time} :: {changes}");
Debug($"{Time} :: {changes}");
_securityChangesCallCount++;
if (_securityChangesCallCount <= 2 && _firstOnDataCallDone)
{
throw new RegressionTestException("Expected 2 OnSecuritiesChanged calls (Underlying addition + Options additions) " +
"before the first data is sent to the algorithm");
}
if (_securityChangesCallCount == 1)
{
// The first time, only the underlying should have been added
if (changes.AddedSecurities.Count != 1 || changes.RemovedSecurities.Count != 0)
if (changes.RemovedSecurities.Count != 0)
{
throw new RegressionTestException($"Unexpected securities changes on first OnSecuritiesChanged event. " +
$"Expected one security added and none removed but got {changes.AddedSecurities.Count} securities added " +
$"and {changes.RemovedSecurities.Count} removed.");
$"Expected no removed securities but got {changes.RemovedSecurities.Count}.");
}
var addedSecuritySymbol = changes.AddedSecurities.Single().Symbol;
var addedSecuritySymbol = changes.AddedSecurities.SingleOrDefault(x => x.Symbol == _optionSymbol.Underlying).Symbol;
if (addedSecuritySymbol != _optionSymbol.Underlying)
{
throw new RegressionTestException($"Expected to find {_optionSymbol.Underlying} in first OnSecuritiesChanged event, " +
$"but found {addedSecuritySymbol}");
}
}
else if (_securityChangesCallCount == 2)
{
var expectedSelectionTime = StartDate.Add(Securities[_optionSymbol].Resolution.ToTimeSpan());
if (_selectionTimeUtc == DateTime.MinValue)
{
throw new RegressionTestException("Option chain universe selection time was not set");
throw new RegressionTestException($"Expected to find {_optionSymbol.Underlying} in first OnSecuritiesChanged event");
}
if (changes.AddedSecurities.Count != _selectedOptionsCount || changes.RemovedSecurities.Count != 0)
var addedOptions = changes.AddedSecurities
.Where(x => x.Symbol.SecurityType == SecurityType.Option && x.Symbol.Canonical == _optionSymbol)
.ToList();
if (addedOptions.Count != _selectedOptionsCount || addedOptions.Count != changes.AddedSecurities.Count - 1)
{
throw new RegressionTestException($"Unexpected securities changes on second OnSecuritiesChanged event. " +
$"Expected {_selectedOptionsCount} options added and none removed but got {changes.AddedSecurities.Count} " +
$"securities added and {changes.RemovedSecurities.Count} removed.");
}
if (!changes.AddedSecurities.All(x => x.Type.IsOption() && !x.Symbol.IsCanonical() && x.Symbol.Canonical == _optionSymbol))
{
throw new RegressionTestException($"Expected to find a multiple option contracts");
throw new RegressionTestException($"Expected {_selectedOptionsCount} options to be added in the first OnSecuritiesChanged event, " +
$"but found {addedOptions.Count}");
}
}
}
@@ -148,9 +137,9 @@ namespace QuantConnect.Algorithm.CSharp
throw new RegressionTestException("OnData was never called");
}
if (_securityChangesCallCount < 2)
if (_securityChangesCallCount != 1)
{
throw new RegressionTestException("OnSecuritiesChanged was not called at least twice");
throw new RegressionTestException($"Expected OnSecuritiesChanged to be called once, but was actually called {_securityChangesCallCount} times");
}
}
@@ -167,7 +156,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 470437;
public long DataPoints => 14325;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -33,6 +33,7 @@ namespace QuantConnect.Algorithm.CSharp
private int _optionCount;
private Symbol _lastEquityAdded;
private Symbol _aapl;
private int _onSecuritiesChangedCallCount;
public override void Initialize()
{
@@ -62,7 +63,7 @@ namespace QuantConnect.Algorithm.CSharp
}
return universe.IncludeWeeklys()
.BackMonth() // back month so that they don't get removed because of being delisted
.Contracts(universe.Take(5));
.Contracts(contracts => contracts.Take(5));
});
}
@@ -100,9 +101,10 @@ namespace QuantConnect.Algorithm.CSharp
public override void OnSecuritiesChanged(SecurityChanges changes)
{
Debug($"{GetStatusLog()}. CHANGES {changes}");
_onSecuritiesChangedCallCount++;
if (Time.Day == 6)
{
if (Time.Hour != 0 && Time.Hour != 9)
if (Time.Hour != 0)
{
throw new RegressionTestException($"Unexpected SecurityChanges time: {Time} {changes}");
}
@@ -112,7 +114,7 @@ namespace QuantConnect.Algorithm.CSharp
throw new RegressionTestException($"Unexpected removals: {changes}");
}
if (Time.Hour == 0)
if (_onSecuritiesChangedCallCount == 1)
{
// first we expect the equity to get Added
if (changes.AddedSecurities.Count != 1 || changes.AddedSecurities[0].Symbol != _aapl)
@@ -137,12 +139,9 @@ namespace QuantConnect.Algorithm.CSharp
throw new RegressionTestException($"Unexpected SecurityChanges time: {Time} {changes}");
}
if (changes.AddedSecurities.Count != 0)
{
throw new RegressionTestException($"Unexpected additions: {changes}");
}
// Options can be selected/deselected on this day, but the equity should be removed
if (changes.RemovedSecurities.Count != 1 || changes.RemovedSecurities[0].Symbol != _aapl)
if (changes.RemovedSecurities.Count == 0 || !changes.RemovedSecurities.Any(x => x.Symbol == _aapl))
{
throw new RegressionTestException($"Unexpected SecurityChanges: {changes}");
}
@@ -205,7 +204,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 921994;
public long DataPoints => 17966;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -95,7 +95,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 3541240;
public long DataPoints => 19700;
/// <summary>
/// Data Points count of the algorithm history
@@ -115,7 +115,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Total Orders", "1"},
{"Average Win", "0%"},
{"Average Loss", "0%"},
{"Compounding Annual Return", "0.562%"},
{"Compounding Annual Return", "0.524%"},
{"Drawdown", "0.000%"},
{"Expectancy", "0"},
{"Start Equity", "100000"},

View File

@@ -83,7 +83,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public long DataPoints => 1033404;
public long DataPoints => 49264;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -82,7 +82,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -79,7 +79,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -119,7 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$6.50"},
{"Estimated Strategy Capacity", "$5500000.00"},
{"Estimated Strategy Capacity", "$5400000.00"},
{"Lowest Capacity Asset", "GOOCV WBGM95TAH2LI|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "28.44%"},
{"OrderListHash", "e9104f749ad7055346b26e6db3bdb437"}

View File

@@ -78,7 +78,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -118,7 +118,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$7.15"},
{"Estimated Strategy Capacity", "$33000000.00"},
{"Estimated Strategy Capacity", "$45000000.00"},
{"Lowest Capacity Asset", "GOOCV WBGM95TAH2LI|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "6.17%"},
{"OrderListHash", "8f1288896dafb2856b6045f8930e86a6"}

View File

@@ -85,7 +85,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -120,7 +120,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$9.75"},
{"Estimated Strategy Capacity", "$1200000.00"},
{"Estimated Strategy Capacity", "$1100000.00"},
{"Lowest Capacity Asset", "GOOCV 306CZL2DIL4G6|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "9.45%"},
{"OrderListHash", "64e3480ee2ece70a3bb24bef3e7ecdd6"}

View File

@@ -76,7 +76,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -88,7 +88,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -85,7 +85,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -75,7 +75,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -115,7 +115,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$4.50"},
{"Estimated Strategy Capacity", "$5500000.00"},
{"Estimated Strategy Capacity", "$5400000.00"},
{"Lowest Capacity Asset", "GOOCV WBGM95TAH2LI|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "28.20%"},
{"OrderListHash", "a67da2b19b248ab78686660793ddff73"}

View File

@@ -82,7 +82,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -74,7 +74,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -79,7 +79,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -119,7 +119,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$26.00"},
{"Estimated Strategy Capacity", "$70000.00"},
{"Estimated Strategy Capacity", "$69000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZERHAOVVQ|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "30.35%"},
{"OrderListHash", "6d90cdf33bc1dd6e8d190021898a4e66"}

View File

@@ -76,7 +76,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -116,7 +116,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$13.00"},
{"Estimated Strategy Capacity", "$24000.00"},
{"Estimated Strategy Capacity", "$23000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZERHAOVVQ|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "26.19%"},
{"OrderListHash", "4b1bd9b5d8b0dba8ddaceeb1dfbcbbc9"}

View File

@@ -78,7 +78,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -77,7 +77,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -78,7 +78,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -91,7 +91,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -88,7 +88,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -89,7 +89,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -124,7 +124,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$4.00"},
{"Estimated Strategy Capacity", "$160000.00"},
{"Estimated Strategy Capacity", "$180000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZERHAOVVQ|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "4.70%"},
{"OrderListHash", "34f1fe90151a1fc5dff43cd7b1205861"}

View File

@@ -79,7 +79,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -78,7 +78,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -118,7 +118,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$26.00"},
{"Estimated Strategy Capacity", "$290000.00"},
{"Estimated Strategy Capacity", "$280000.00"},
{"Lowest Capacity Asset", "GOOCV 306CZL2DIL4G6|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "25.77%"},
{"OrderListHash", "90ff39e71c0e1dea734cd5e7e45f50d4"}

View File

@@ -75,7 +75,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

View File

@@ -78,7 +78,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history
@@ -118,7 +118,7 @@ namespace QuantConnect.Algorithm.CSharp
{"Tracking Error", "0"},
{"Treynor Ratio", "0"},
{"Total Fees", "$3.00"},
{"Estimated Strategy Capacity", "$7500000.00"},
{"Estimated Strategy Capacity", "$7400000.00"},
{"Lowest Capacity Asset", "GOOCV W78ZFMML01JA|GOOCV VP83T1ZUHROL"},
{"Portfolio Turnover", "38.84%"},
{"OrderListHash", "722e8214812becc745646ff31fcbce1b"}

View File

@@ -95,7 +95,7 @@ namespace QuantConnect.Algorithm.CSharp
/// <summary>
/// Data Points count of all timeslices of algorithm
/// </summary>
public override long DataPoints => 471135;
public override long DataPoints => 15023;
/// <summary>
/// Data Points count of the algorithm history

Some files were not shown because too many files have changed in this diff Show More