示例#1
0
        public void RunPythonSliceGetByTypeRegressionAlgorithm()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("SliceGetByTypeRegressionAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "1" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "284.284%" },
                { "Drawdown", "2.200%" },
                { "Expectancy", "0" },
                { "Net Profit", "1.736%" },
                { "Sharpe Ratio", "8.894" },
                { "Probabilistic Sharpe Ratio", "67.609%" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "-0.004" },
                { "Beta", "0.997" },
                { "Annual Standard Deviation", "0.222" },
                { "Annual Variance", "0.049" },
                { "Information Ratio", "-14.547" },
                { "Tracking Error", "0.001" },
                { "Treynor Ratio", "1.979" },
                { "Total Fees", "$3.45" },
                { "OrderListHash", "46d026d39478ff13853319c2f891af39" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus);
        }
示例#2
0
        public void FilterReturnsUniverseRegression()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("FilterUniverseRegressionAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "1" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "0%" },
                { "Drawdown", "0%" },
                { "Expectancy", "0" },
                { "Net Profit", "0%" },
                { "Sharpe Ratio", "0" },
                { "Probabilistic Sharpe Ratio", "0%" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "0" },
                { "Beta", "0" },
                { "Annual Standard Deviation", "0" },
                { "Annual Variance", "0" },
                { "Information Ratio", "0" },
                { "Tracking Error", "0" },
                { "Treynor Ratio", "0" },
                { "Total Fees", "$1.00" },
                { "OrderListHash", "-379511851" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus);
        }
示例#3
0
        public void RunRegressionAlgorithm()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("CustomConsolidatorRegressionAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "34" },
                { "Average Win", "0.25%" },
                { "Average Loss", "-0.03%" },
                { "Compounding Annual Return", "65.860%" },
                { "Drawdown", "0.300%" },
                { "Expectancy", "2.276" },
                { "Net Profit", "1.068%" },
                { "Sharpe Ratio", "8.823" },
                { "Probabilistic Sharpe Ratio", "89.221%" },
                { "Loss Rate", "69%" },
                { "Win Rate", "31%" },
                { "Profit-Loss Ratio", "9.48" },
                { "Alpha", "0.524" },
                { "Beta", "0.345" },
                { "Annual Standard Deviation", "0.081" },
                { "Annual Variance", "0.007" },
                { "Information Ratio", "1.144" },
                { "Tracking Error", "0.144" },
                { "Treynor Ratio", "2.067" },
                { "Total Fees", "$54.82" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus);
        }
        public void RunRegressionAlgorithm()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("CustomConsolidatorRegressionAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "32" },
                { "Average Win", "0.42%" },
                { "Average Loss", "-0.02%" },
                { "Compounding Annual Return", "66.060%" },
                { "Drawdown", "0.300%" },
                { "Expectancy", "2.979" },
                { "Net Profit", "1.071%" },
                { "Sharpe Ratio", "8.939" },
                { "Probabilistic Sharpe Ratio", "88.793%" },
                { "Loss Rate", "81%" },
                { "Win Rate", "19%" },
                { "Profit-Loss Ratio", "20.22" },
                { "Alpha", "0.528" },
                { "Beta", "0.35" },
                { "Annual Standard Deviation", "0.08" },
                { "Annual Variance", "0.006" },
                { "Information Ratio", "1.287" },
                { "Tracking Error", "0.141" },
                { "Treynor Ratio", "2.045" },
                { "Total Fees", "$51.40" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus);
        }
示例#5
0
 public MainForm()
 {
     InitializeComponent();
     CheckForIllegalCrossThreadCalls = false;
     AlgorithmRunner = new AlgorithmRunner();
     AlgorithmRunner.Init();
 }
示例#6
0
        public void RunRegressionAlgorithm()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("CustomConsolidatorRegressionAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "49" },
                { "Average Win", "0.25%" },
                { "Average Loss", "-0.01%" },
                { "Compounding Annual Return", "65.750%" },
                { "Drawdown", "0.300%" },
                { "Expectancy", "2.577" },
                { "Net Profit", "1.067%" },
                { "Sharpe Ratio", "6.873" },
                { "Probabilistic Sharpe Ratio", "89.382%" },
                { "Loss Rate", "80%" },
                { "Win Rate", "20%" },
                { "Profit-Loss Ratio", "16.88" },
                { "Alpha", "0.34" },
                { "Beta", "0.351" },
                { "Annual Standard Deviation", "0.068" },
                { "Annual Variance", "0.005" },
                { "Information Ratio", "0.865" },
                { "Tracking Error", "0.118" },
                { "Treynor Ratio", "1.336" },
                { "Total Fees", "$69.81" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus);
        }
示例#7
0
        public void RunPythonSliceGetByTypeRegressionAlgorithm()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("SliceGetByTypeRegressionAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "1" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "277.455%" },
                { "Drawdown", "2.200%" },
                { "Expectancy", "0" },
                { "Net Profit", "1.713%" },
                { "Sharpe Ratio", "8.755" },
                { "Probabilistic Sharpe Ratio", "67.311%" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "-0.003" },
                { "Beta", "0.997" },
                { "Annual Standard Deviation", "0.219" },
                { "Annual Variance", "0.048" },
                { "Information Ratio", "-14.15" },
                { "Tracking Error", "0.001" },
                { "Treynor Ratio", "1.924" },
                { "Total Fees", "$3.26" },
                { "OrderListHash", "16564191ddd913e841e3f51febc035aa" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus);
        }
示例#8
0
        private static void RoomArrangementForOneGroup(int GroupIndex, List <Room> RoomList)
        {
            int StudentsNumber = StudentByGroup[Groups[GroupIndex]].Count;

            if (StudentsNumber > MaxContaint)
            {
                AlgorithmRunner.SaveOBJ("Status", "err Phòng thi không đủ, đang dừng lại ở nhóm thi: " + Groups[GroupIndex] + " với số sinh viên là:" + StudentsNumber);
                AlgorithmRunner.IsBusy = false;
                Thread.CurrentThread.Abort();
            }

            GroupsRoom[GroupIndex] = new List <Room>();
            int OldRoomUsedIndex = RoomUsedIndex;

            while (StudentsNumber > 0)
            {
                RoomUsedIndex++;
                if (RoomUsedIndex < RoomList.Count) // còn phòng
                {
                    GroupsRoom[GroupIndex].Add(RoomList[RoomUsedIndex]);
                    StudentsNumber -= RoomList[RoomUsedIndex].Container;
                    // đáng lẽ code phân trực tiếp sv vào phòng ở đây, nhưng như vậy phòng ít phòng nhiều
                    // để đó sau này truy vấn lại môn này thi mấy phòng rồi chia sau!
                }
            }
            MakeStudentList(GroupIndex);
        }
示例#9
0
        public void JobDatesAreRespectedByAddUniverseAtInitialize()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters(nameof(CoarseFundamentalTop3Algorithm),
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "3" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "-40.620%" },
                { "Drawdown", "0.300%" },
                { "Expectancy", "0" },
                { "Net Profit", "-0.285%" },
                { "Sharpe Ratio", "-9.435" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "-0.802" },
                { "Beta", "0.569" },
                { "Annual Standard Deviation", "0.032" },
                { "Annual Variance", "0.001" },
                { "Information Ratio", "-48.662" },
                { "Tracking Error", "0.024" },
                { "Treynor Ratio", "-0.531" },
                { "Total Fees", "$3.00" }
            },
                                                                                  Language.CSharp,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus,
                                             startDate: new DateTime(2014, 03, 24),
                                             endDate: new DateTime(2014, 03, 25));
        }
示例#10
0
        static void Main(string[] args)
        {
            if (args.Length < 3)
            {
                Console.WriteLine(
                    "Please specify input file path, source vertex id and " +
                    "coma-separated list of destination verticies ids.");
            }
            else
            {
                try
                {
                    var inputGraphFileContent = ArgumentsParser.GetFileContent(args[0]);
                    var sourceVertexId = ArgumentsParser.ParseSourceVertexId(args[1]);
                    var destinationVerticesIds = ArgumentsParser.ParseDestinationVerticesIds(args[2]);

                    var algorithmRunner = new AlgorithmRunner();
                    var shortestPaths = algorithmRunner.FindShortestPaths(
                        inputGraphFileContent,
                        sourceVertexId);

                    var result = OutputFormatter.Format(shortestPaths, destinationVerticesIds);

                    Console.WriteLine("Result is {0}", result);
                }
                catch (Exception ex)
                {
                    PrintError(ex);
                }
            }

            Console.WriteLine("Press any key to exit ...");
            Console.ReadKey();
        }
        public void InitialCashAmountIsRespected()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters(nameof(BasicTemplateDailyAlgorithm),
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "1" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "246.519%" },
                { "Drawdown", "1.100%" },
                { "Expectancy", "0" },
                { "Net Profit", "3.463%" },
                { "Sharpe Ratio", "6.033" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "0.012" },
                { "Beta", "0.992" },
                { "Annual Standard Deviation", "0.16" },
                { "Annual Variance", "0.026" },
                { "Information Ratio", "2.734" },
                { "Tracking Error", "0.002" },
                { "Treynor Ratio", "0.974" },
                { "Total Fees", "$32.59" }   // 10x times more than original BasicTemplateDailyAlgorithm
            },
                                                                                  Language.CSharp,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus,
                                             initialCash: 1000000); // 1M vs 100K that is set in BasicTemplateDailyAlgorithm (10x)
        }
示例#12
0
 public MainForm()
 {
     InitializeComponent();
     CheckForIllegalCrossThreadCalls = false;
     AlgorithmRunner = new AlgorithmRunner();
     AlgorithmRunner.Init();
 }
示例#13
0
        public void JobDatesAreRespected()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters(nameof(BasicTemplateDailyAlgorithm),
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "1" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "17.560%" },
                { "Drawdown", "30.400%" },
                { "Expectancy", "0" },
                { "Net Profit", "38.142%" },
                { "Sharpe Ratio", "0.689" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "0.026" },
                { "Beta", "0.942" },
                { "Annual Standard Deviation", "0.3" },
                { "Annual Variance", "0.09" },
                { "Information Ratio", "0.347" },
                { "Tracking Error", "0.042" },
                { "Treynor Ratio", "0.219" },
                { "Total Fees", "$6.62" }
            },
                                                                                  Language.CSharp,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus,
                                             startDate: new DateTime(2008, 10, 10),
                                             endDate: new DateTime(2010, 10, 10));
        }
示例#14
0
        public PathWithValues GetIls(int start, int min)
        {
            var(cords, weights) = FileReader.ReadTestData();
            var distances = CalculateDistances(cords);
            var result    = AlgorithmRunner.ILS(distances, weights, min, start);

            return(result);
        }
        private IList <QueryResponse> Evaluate(string data)
        {
            //var modelSaver = new SimpleModelSaver();
            var parseResult = Parser.Parse(data);
            var succ        = Assert.IsType <ParseResult.Success>(parseResult);

            return(AlgorithmRunner.EvaluateQueries(succ).queryResults);
        }
示例#16
0
        public PathWithValues GetVnsRealData(int start, int min)
        {
            var(connections, distances, weights) = FileReader.ReadRealData();
            var distancesArray = AlgorithmRunner.Dijkstra(connections, distances, 201);

            var result = AlgorithmRunner.VNS(distancesArray, weights, min, start);

            return(result);
        }
示例#17
0
        public void FilterReturnsListRegression()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("BasicTemplateOptionsFilterUniverseAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "1" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "0%" },
                { "Drawdown", "0%" },
                { "Expectancy", "0" },
                { "Net Profit", "0%" },
                { "Sharpe Ratio", "0" },
                { "Probabilistic Sharpe Ratio", "0%" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "0" },
                { "Beta", "0" },
                { "Annual Standard Deviation", "0" },
                { "Annual Variance", "0" },
                { "Information Ratio", "0" },
                { "Tracking Error", "0" },
                { "Treynor Ratio", "0" },
                { "Total Fees", "$1.00" },
                { "Fitness Score", "0" },
                { "Kelly Criterion Estimate", "0" },
                { "Kelly Criterion Probability Value", "0" },
                { "Sortino Ratio", "0" },
                { "Return Over Maximum Drawdown", "0" },
                { "Portfolio Turnover", "0" },
                { "Total Insights Generated", "0" },
                { "Total Insights Closed", "0" },
                { "Total Insights Analysis Completed", "0" },
                { "Long Insight Count", "0" },
                { "Short Insight Count", "0" },
                { "Long/Short Ratio", "100%" },
                { "Estimated Monthly Alpha Value", "$0" },
                { "Total Accumulated Estimated Alpha Value", "$0" },
                { "Mean Population Estimated Insight Value", "$0" },
                { "Mean Population Direction", "0%" },
                { "Mean Population Magnitude", "0%" },
                { "Rolling Averaged Population Direction", "0%" },
                { "Rolling Averaged Population Magnitude", "0%" },
                { "OrderListHash", "1935621950" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus);
        }
示例#18
0
 public static void Run()
 {
     InitGroup();
     GetStudentList();
     Arrangement();
     AlgorithmRunner.SaveOBJ("GroupsTimePri", RoomPriority.GroupsTime);
     AlgorithmRunner.SaveOBJ("GroupsRoomPri", RoomPriority.GroupsRoom);
     AlgorithmRunner.SaveOBJ("GroupsRoomStudentsPri", RoomPriority.GroupsRoomStudents);
     UpdateShiftsAndRooms();
     AlgorithmRunner.SaveOBJ("AppShifts", InputHelper.Shifts);
     AlgorithmRunner.SaveOBJ("AppRooms", InputHelper.Rooms);
 }
示例#19
0
        public void AlgorithmCompletesWhenCallingErroLogOnInit(Type algorithmType)
        {
            var parameters = new RegressionTests.AlgorithmStatisticsTestParameters("QuantConnect.Tests.Engine.AlgorithmLogTests+" + algorithmType.Name,
                                                                                   Activator.CreateInstance <BasicTemplateDailyAlgorithm>().ExpectedStatistics,
                                                                                   Language.CSharp,
                                                                                   AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameters.Algorithm,
                                             parameters.Statistics,
                                             parameters.AlphaStatistics,
                                             parameters.Language,
                                             parameters.ExpectedFinalStatus,
                                             algorithmLocation: "QuantConnect.Tests.dll");
        }
示例#20
0
        public void StopsAlgorithm()
        {
            Config.Set("algorithm-manager-time-loop-maximum", "0.05");
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters(nameof(TrainingInitializeRegressionAlgorithm),
                                                                                  new Dictionary <string, string>(),
                                                                                  Language.CSharp,
                                                                                  AlgorithmStatus.RuntimeError);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus);
        }
示例#21
0
 private static void UpdateShiftsAndRooms()
 {
     for (int Index = 0; Index < GroupsTime.Length; Index++)
     {
         int ShiftIndex = InputHelper.Shifts.FindIndex(m => m.Time == GroupsTime[Index]);
         InputHelper.Shifts[ShiftIndex].IsBusy = true;
         int RoomListIndex = InputHelper.Rooms.FindIndex(m => m.Time == GroupsTime[Index]);
         foreach (Room aRoom in GroupsRoom[Index])
         {
             int RoomIndex = InputHelper.Rooms[RoomListIndex].Rooms.FindIndex(m => m.RoomID == aRoom.RoomID);
             InputHelper.Rooms[RoomListIndex].Rooms[RoomIndex].IsBusy = true;
         }
     }
     AlgorithmRunner.SaveOBJ("Rooms", InputHelper.Rooms);
 }
示例#22
0
 private static void GetStudentList()
 {
     StudentByGroup = new Dictionary <String, List <String> >();
     for (int GroupIndex = 0; GroupIndex < Groups.Count; GroupIndex++)
     {
         String SubjectID            = AlgorithmRunner.GetSubjectID(Groups[GroupIndex]);
         String ClassList            = AlgorithmRunner.GetClassList(Groups[GroupIndex]);
         IEnumerable <String> Result = InputHelper.db.Database.SqlQuery <String>("select sinhvien.MaSinhVien from pdkmh, sinhvien "
                                                                                 + "where pdkmh.MaSinhVien = sinhvien.MaSinhVien "
                                                                                 + "and MaMonHoc = '" + SubjectID + "' "
                                                                                 + "and pdkmh.Nhom in(" + ClassList + ") "
                                                                                 + "order by (Ten + Ho)");
         StudentByGroup.Add(Groups[GroupIndex], Result.ToList <String>());
     }
     GroupsRoom         = new List <Room> [Groups.Count];
     GroupsRoomStudents = new List <String> [Groups.Count][];
 }
示例#23
0
        public void InvalidConfigurationAddSecurity()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters(nameof(BasicTemplateDailyAlgorithm),
                                                                                  new Dictionary <string, string>(),
                                                                                  Language.CSharp,
                                                                                  // will throw on initialization
                                                                                  AlgorithmStatus.Running);

            var result = AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                                          parameter.Statistics,
                                                          parameter.AlphaStatistics,
                                                          parameter.Language,
                                                          parameter.ExpectedFinalStatus);

            // algorithm was never set
            Assert.IsEmpty(result.AlgorithmManager.AlgorithmId);
        }
        public void FindShortestPaths()
        {
            var inputGraph = @"1 2,10 3,20".Replace(" ", "\t");
            var sourceVertexId = 1;

            var algorithmRunner = new AlgorithmRunner();

            List<ShortestPath> actual = algorithmRunner.FindShortestPaths(
                                            inputGraph, sourceVertexId);

            var expected = new List<ShortestPath> { 
                new ShortestPath{ From = new Vertex(1), To = new Vertex(1), Length = 0},
                new ShortestPath{ From = new Vertex(1), To = new Vertex(2), Length = 10},
                new ShortestPath{ From = new Vertex(1), To = new Vertex(3), Length = 20},
            };

            AssertionHelper.AssertAreEqual(expected, actual);
        }
示例#25
0
        public void InvalidConfigurationHistoryRequest()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters(nameof(TestInvalidConfigurationAlgorithm),
                                                                                  new Dictionary <string, string>(),
                                                                                  Language.CSharp,
                                                                                  // will throw on initialization
                                                                                  AlgorithmStatus.Running);

            var result = AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                                          parameter.Statistics,
                                                          parameter.AlphaStatistics,
                                                          parameter.Language,
                                                          parameter.ExpectedFinalStatus,
                                                          setupHandler: "TestInvalidConfigurationSetupHandler");

            // algorithm was never set
            Assert.IsEmpty(result.AlgorithmManager.AlgorithmId);
            // let's assert initialize was called by the history call failed
            Assert.AreEqual(1, TestInvalidConfigurationAlgorithm.Count);
        }
示例#26
0
        public void SetBenchmarksSecurityTypes(SecurityType securityType)
        {
            _algorithm = BenchmarkTestSetupHandler.TestAlgorithm = new TestBenchmarkAlgorithm(securityType);
            _algorithm.StartDateToUse = new DateTime(2014, 05, 03);
            _algorithm.EndDateToUse   = new DateTime(2014, 05, 04);

            var results = AlgorithmRunner.RunLocalBacktest(nameof(TestBenchmarkAlgorithm),
                                                           new Dictionary <string, string> {
                { "Total Trades", "0" }
            },
                                                           null,
                                                           Language.CSharp,
                                                           AlgorithmStatus.Completed,
                                                           setupHandler: "BenchmarkTestSetupHandler");


            var benchmark = _algorithm.Benchmark as SecurityBenchmark;

            Assert.IsNotNull(benchmark);
            Assert.AreEqual(securityType, benchmark.Security.Type);
            Assert.IsNull(_algorithm.RunTimeError);
        }
        public void ClearsOtherCashAmounts()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters(nameof(TestInitialCashAmountAlgorithm),
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "1" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "214.949%" },
                { "Drawdown", "1.200%" },
                { "Expectancy", "0" },
                { "Net Profit", "3.464%" },
                { "Sharpe Ratio", "16.598" },
                { "Probabilistic Sharpe Ratio", "98.038%" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "-0.004" },
                { "Beta", "0.998" },
                { "Annual Standard Deviation", "0.133" },
                { "Annual Variance", "0.018" },
                { "Information Ratio", "-28.017" },
                { "Tracking Error", "0" },
                { "Treynor Ratio", "2.209" },
                { "Total Fees", "$34.45" }   // 10x times more than original BasicTemplateDailyAlgorithm
            },
                                                                                  Language.CSharp,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus,
                                             initialCash: 1000000, // 1M vs 100K that is set in BasicTemplateDailyAlgorithm (10x)
                                             setupHandler: "TestInitialCashAmountSetupHandler");

            Assert.AreEqual(0, TestInitialCashAmountSetupHandler.TestAlgorithm.Portfolio.CashBook["EUR"].Amount);
            Assert.AreEqual(Currencies.USD, TestInitialCashAmountSetupHandler.TestAlgorithm.AccountCurrency);
        }
示例#28
0
        public void MonitorsAlgorithmState(AlgorithmStatus algorithmStatus)
        {
            AlgorithmManagerAlgorithmStatusTest.Loops           = 0;
            AlgorithmManagerAlgorithmStatusTest.AlgorithmStatus = algorithmStatus;
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("QuantConnect.Tests.Engine.AlgorithmManagerTests+AlgorithmManagerAlgorithmStatusTest",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "0" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "0%" },
                { "Drawdown", "0%" },
                { "Expectancy", "0" },
                { "Net Profit", "0%" },
                { "Sharpe Ratio", "0" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "0" },
                { "Beta", "0" },
                { "Annual Standard Deviation", "0" },
                { "Annual Variance", "0" },
                { "Information Ratio", "0" },
                { "Tracking Error", "0" },
                { "Treynor Ratio", "0" },
                { "Total Fees", "$0.00" }
            },
                                                                                  Language.CSharp,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus,
                                             algorithmLocation: "QuantConnect.Tests.dll");

            Assert.AreEqual(1, AlgorithmManagerAlgorithmStatusTest.Loops);
        }
        public BacktestingResultHandler GetResults(string algorithm, DateTime algoStart, DateTime algoEnd)
        {
            // Required, otherwise LocalObjectStoreTests overwrites the "object-store-root" config value
            // and causes the algorithm to error out.
            Config.Reset();

            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters(algorithm,
                                                                                  new Dictionary <string, string>(),
                                                                                  Language.CSharp,
                                                                                  AlgorithmStatus.Completed);

            // The AlgorithmRunner uses the `RegressionResultHandler` but doesn't do any sampling.
            // It defaults to the behavior of the `BacktestingResultHandler` class in `results.ProcessSynchronousEvents()`
            var backtestResults = AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                                                   parameter.Statistics,
                                                                   parameter.AlphaStatistics,
                                                                   parameter.Language,
                                                                   parameter.ExpectedFinalStatus,
                                                                   startDate: algoStart,
                                                                   endDate: algoEnd);

            return(backtestResults.Results);
        }
示例#30
0
        public void RunPythonDictionaryFeatureRegressionAlgorithm()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("PythonDictionaryFeatureRegressionAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "3" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "-100%" },
                { "Drawdown", "99.600%" },
                { "Expectancy", "0" },
                { "Net Profit", "-99.604%" },
                { "Sharpe Ratio", "-0.126" },
                { "Probabilistic Sharpe Ratio", "1.658%" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "3.904" },
                { "Beta", "-2.545" },
                { "Annual Standard Deviation", "7.95" },
                { "Annual Variance", "63.196" },
                { "Information Ratio", "-0.367" },
                { "Tracking Error", "7.968" },
                { "Treynor Ratio", "0.393" },
                { "Total Fees", "$0.00" },
                { "OrderListHash", "0bf01ae8e3f415e3de14ddd11ab0c447" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus,
                                             initialCash: 100000);
        }
示例#31
0
        /// <summary>
        ///     Compute button onclick handler
        /// </summary>
        public async void Compute()
        {
            try
            {
                var result = Business.Parsing.Parser.Parse(InputTextSentence + Environment.NewLine + InputTextScenario + Environment.NewLine + InputTextQuery);
                switch (result)
                {
                case ParseResult.Success success:
                    var results = AlgorithmRunner.EvaluateQueries(success);
                    OutputText      = string.Join("\n", results.queryResults.Select(q => q.Response).ToArray());
                    AlgorithmResult = new AlgorithmResultModel(results.modelsByScenario, results.extracted);
                    break;

                case ParseResult.Failure failure:
                    await ShowError(BuildErrorMessage(failure));

                    break;
                }
            }
            catch (Exception ex)
            {
                await ShowError(ex.Message);
            }
        }
示例#32
0
        public void RunPythonDictionaryFeatureRegressionAlgorithm()
        {
            var parameter = new RegressionTests.AlgorithmStatisticsTestParameters("PythonDictionaryFeatureRegressionAlgorithm",
                                                                                  new Dictionary <string, string> {
                { "Total Trades", "3" },
                { "Average Win", "0%" },
                { "Average Loss", "0%" },
                { "Compounding Annual Return", "-100%" },
                { "Drawdown", "99.600%" },
                { "Expectancy", "0" },
                { "Net Profit", "-99.552%" },
                { "Sharpe Ratio", "-0.126" },
                { "Probabilistic Sharpe Ratio", "1.663%" },
                { "Loss Rate", "0%" },
                { "Win Rate", "0%" },
                { "Profit-Loss Ratio", "0" },
                { "Alpha", "3.017" },
                { "Beta", "-2.026" },
                { "Annual Standard Deviation", "7.946" },
                { "Annual Variance", "63.138" },
                { "Information Ratio", "-0.375" },
                { "Tracking Error", "7.962" },
                { "Treynor Ratio", "0.494" },
                { "Total Fees", "$0.00" },
                { "OrderListHash", "218e1e2f47242e521724787eb661c639" }
            },
                                                                                  Language.Python,
                                                                                  AlgorithmStatus.Completed);

            AlgorithmRunner.RunLocalBacktest(parameter.Algorithm,
                                             parameter.Statistics,
                                             parameter.AlphaStatistics,
                                             parameter.Language,
                                             parameter.ExpectedFinalStatus,
                                             initialCash: 100000);
        }
 public void Initialize()
 {
     this.graphParser = Substitute.For<IGraphParser>();
     this.algorithm = Substitute.For<IAlgorithm>();
     this.algorithmRunner = new AlgorithmRunner(this.graphParser, this.algorithm);
 }
        public void WarmupDifferentResolutions(Resolution resolution, SecurityType securityType)
        {
            _algorithm = TestSetupHandler.TestAlgorithm = new TestWarmupAlgorithm(resolution);

            _algorithm.SecurityType = securityType;
            if (securityType == SecurityType.Forex)
            {
                _algorithm.StartDateToUse = new DateTime(2014, 05, 03);
                _algorithm.EndDateToUse   = new DateTime(2014, 05, 04);
            }
            else if (securityType == SecurityType.Equity)
            {
                _algorithm.StartDateToUse = new DateTime(2013, 10, 09);
                _algorithm.EndDateToUse   = new DateTime(2013, 10, 10);
            }
            else if (securityType == SecurityType.Crypto)
            {
                _algorithm.StartDateToUse = new DateTime(2018, 04, 06);
                _algorithm.EndDateToUse   = new DateTime(2018, 04, 07);
            }

            AlgorithmRunner.RunLocalBacktest(nameof(TestWarmupAlgorithm),
                                             new Dictionary <string, string> {
                { "Total Trades", "1" }
            },
                                             null,
                                             Language.CSharp,
                                             AlgorithmStatus.Completed,
                                             setupHandler: "TestSetupHandler");

            int estimateExpectedDataCount;

            switch (resolution)
            {
            case Resolution.Tick:
                estimateExpectedDataCount = 2 * (securityType == SecurityType.Forex ? 19 : 4) * 60 * 60;
                break;

            case Resolution.Second:
                estimateExpectedDataCount = 2 * (securityType == SecurityType.Forex ? 19 : 6) * 60 * 60;
                break;

            case Resolution.Minute:
                estimateExpectedDataCount = 2 * (securityType == SecurityType.Forex ? 19 : 6) * 60;
                break;

            case Resolution.Hour:
                estimateExpectedDataCount = 2 * (securityType == SecurityType.Forex ? 19 : 6);
                break;

            case Resolution.Daily:
                estimateExpectedDataCount = 2;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(resolution), resolution, null);
            }

            Log.Trace($"WarmUpDataCount: {_algorithm.WarmUpDataCount}. Resolution {resolution}. SecurityType {securityType}");
            Assert.GreaterOrEqual(_algorithm.WarmUpDataCount, estimateExpectedDataCount);
        }