Overall Statistics
Total Trades
608
Average Win
0.03%
Average Loss
-0.03%
Compounding Annual Return
-4.961%
Drawdown
1.700%
Expectancy
-0.190
Net Profit
-0.820%
Sharpe Ratio
-0.218
Probabilistic Sharpe Ratio
29.594%
Loss Rate
61%
Win Rate
39%
Profit-Loss Ratio
1.09
Alpha
-0.182
Beta
0.742
Annual Standard Deviation
0.049
Annual Variance
0.002
Information Ratio
-7.63
Tracking Error
0.032
Treynor Ratio
-0.014
Total Fees
$608.00
# 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.Core")
AddReference("System.Collections")
AddReference("QuantConnect.Common")
AddReference("QuantConnect.Algorithm")

from System import *
from System.Collections.Generic import List
from QuantConnect import *
from QuantConnect.Algorithm import QCAlgorithm
from QuantConnect.Data.UniverseSelection import *


class CoarseFineUniverseSelectionBenchmark(QCAlgorithm):

    def Initialize(self):

        self.SetStartDate(2017, 11, 1)
        self.SetEndDate(2018, 1, 1)
        self.SetCash(50000)

        self.UniverseSettings.Resolution = Resolution.Minute

        self.AddUniverse(self.CoarseSelectionFunction, self.FineSelectionFunction)

        self.numberOfSymbols = 150
        self.numberOfSymbolsFine = 40
        self._changes = None

    # sort the data by daily dollar volume and take the top 'NumberOfSymbols'
    def CoarseSelectionFunction(self, coarse):

        selected = [x for x in coarse if (x.HasFundamentalData)]
        # sort descending by daily dollar volume
        sortedByDollarVolume = sorted(selected, key=lambda x: x.DollarVolume, reverse=True)

        # return the symbol objects of the top entries from our sorted collection
        return [ x.Symbol for x in sortedByDollarVolume[:self.numberOfSymbols] ]

    # sort the data by P/E ratio and take the top 'NumberOfSymbolsFine'
    def FineSelectionFunction(self, fine):
        # sort descending by P/E ratio
        sortedByPeRatio = sorted(fine, key=lambda x: x.OperationRatios.ROIC.Value, reverse=True)
        # take the top entries from our sorted collection
        return [ x.Symbol for x in sortedByPeRatio[:self.numberOfSymbolsFine] ]

    def OnData(self, data):
        # if we have no changes, do nothing
        if self._changes is None: return

        # liquidate removed securities
        for security in self._changes.RemovedSecurities:
            if security.Invested:
                self.Liquidate(security.Symbol)

        for security in self._changes.AddedSecurities:
            self.SetHoldings(security.Symbol, 0.02)
        self._changes = None;

    def OnSecuritiesChanged(self, changes):
        self._changes = changes
from QuantConnect.Data.Custom.USEnergy import *
class USEnergyAlphaModel:
    
    def __init__(self, algorithm):
        self.energy = algorithm.AddData(USEnergy, USEnergy.Petroleum.UnitedStates.WeeklyGrossInputsIntoRefineries).Symbol
    
    def Update(self, algorithm, data):
        insights = []
        
        if not data.ContainsKey(self.energy):
            return insights

        energy_data = data.Get(USEnergy, self.energy)
            
        ## The U.S. Energy Information Administration (EIA) is a principal agency of the U.S. Federal Statistical System
        ## responsible for collecting, analyzing, and disseminating energy information to promote sound policymaking,
        ## efficient markets, and public understanding of energy and its interaction with the economy and the environment.
        ## EIA programs cover data on coal, petroleum, natural gas, electric, renewable and nuclear energy. EIA is part of the U.S. Department of Energy.
        
        ## Find more categories here: https://github.com/QuantConnect/Lean/blob/master/Common/Data/Custom/USEnergy/USEnergy.Category.cs
        
        return insights

    def OnSecuritiesChanged(self, algorithm, changes):
        # For instruction on how to use this method, please visit
        # https://www.quantconnect.com/docs/algorithm-framework/alpha-creation#Alpha-Creation-Good-Design-Patterns
        pass