Skip to content

Commit

Permalink
Adds Examples for Train Feature
Browse files Browse the repository at this point in the history
- Adds Python version of `TrainingInitializeRegressionAlgorithm`;
- Adds C# version of `TrainingExampleAlgorithm`;
- Removes `TrainingScheduledRegressionAlgorithm`.
  • Loading branch information
AlexCatarino committed Oct 28, 2019
1 parent bad69c5 commit 5bb28b4
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 54 deletions.
2 changes: 1 addition & 1 deletion Algorithm.CSharp/QuantConnect.Algorithm.CSharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@
<Compile Include="CustomUniverseSelectionRegressionAlgorithm.cs" />
<Compile Include="OnEndOfDayRegressionAlgorithm.cs" />
<Compile Include="TrainingInitializeRegressionAlgorithm.cs" />
<Compile Include="TrainingScheduledRegressionAlgorithm.cs" />
<Compile Include="TrainingExampleAlgorithm.cs" />
<Compile Include="UniverseUnchangedRegressionAlgorithm.cs" />
<Compile Include="USTreasuryYieldCurveDataAlgorithm.cs" />
<Compile Include="SECReportDataAlgorithm.cs" />
Expand Down
51 changes: 51 additions & 0 deletions Algorithm.CSharp/TrainingExampleAlgorithm.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

using System;

namespace QuantConnect.Algorithm.CSharp
{
/// <summary>
/// Example algorithm showing how to use QCAlgorithm.Train method
/// <meta name="tag" content="using quantconnect" />
/// <meta name="tag" content="training" />
/// </summary>
public class TrainingExampleAlgorithm : QCAlgorithm
{
public override void Initialize()
{
SetStartDate(2013, 10, 7);
SetEndDate(2013, 10, 14);

AddEquity("SPY", Resolution.Daily);

// Set TrainingMethod to be executed immediately
Train(TrainingMethod);

// Set TrainingMethod to be executed at 8:00 am every Sunday
Train(DateRules.Every(DayOfWeek.Sunday), TimeRules.At(8, 0), TrainingMethod);
}

private void TrainingMethod()
{
Log($"Start training at {Time}");
// Use the historical data to train the machine learning model
var history = History("SPY", 200, Resolution.Daily);

// ML code:

}
}
}
53 changes: 0 additions & 53 deletions Algorithm.CSharp/TrainingScheduledRegressionAlgorithm.cs

This file was deleted.

1 change: 1 addition & 0 deletions Algorithm.Python/QuantConnect.Algorithm.Python.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
<Content Include="TradingEconomicsCalendarIndicatorAlgorithm.py" />
<Content Include="OnEndOfDayRegressionAlgorithm.py" />
<Content Include="SECReportDataAlgorithm.py" />
<None Include="TrainingInitializeRegressionAlgorithm.py" />
<Content Include="UniverseUnchangedRegressionAlgorithm.py" />
<Content Include="USEnergyInformationAdministrationAlgorithm.py" />
<None Include="NLTKSentimentTradingAlgorithm.py" />
Expand Down
43 changes: 43 additions & 0 deletions Algorithm.Python/TrainingInitializeRegressionAlgorithm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
# Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Common")

from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from time import sleep

### <summary>
### This regression algorithm is expected to fail and verifies that a training event
### created in Initialize will get run AND it will cause the algorithm to fail if it
### exceeds the "algorithm-manager-time-loop-maximum" config value, which the regression
### test sets to 0.5 minutes.
### </summary>
class TrainingInitializeRegressionAlgorithm(QCAlgorithm):
'''Example algorithm showing how to use QCAlgorithm.Train method'''

def Initialize(self):

self.SetStartDate(2013, 10, 7)
self.SetEndDate(2013, 10, 11)

self.AddEquity("SPY", Resolution.Daily)

# this should cause the algorithm to fail
# the regression test sets the time limit to 30 seconds and there's one extra
# minute in the bucket, so a two minute sleep should result in RuntimeError
self.Schedule.TrainingNow(lambda: sleep(150))

0 comments on commit 5bb28b4

Please sign in to comment.