示例#1
0
    def Initialize(self):

        self.SetStartDate(2018, 1, 1)
        self.SetCash(100000)

        # Set zero transaction fees
        self.SetSecurityInitializer(
            lambda security: security.SetFeeModel(ConstantFeeModel(0)))

        # select stocks using PennyStockUniverseSelectionModel
        self.UniverseSettings.Resolution = Resolution.Daily
        self.SetUniverseSelection(PennyStockUniverseSelectionModel())

        # Use SykesShortMicroCapAlphaModel to establish insights
        self.SetAlpha(SykesShortMicroCapAlphaModel())

        # Equally weigh securities in portfolio, based on insights
        self.SetPortfolioConstruction(
            EqualWeightingPortfolioConstructionModel())

        # Set Immediate Execution Model
        self.SetExecution(ImmediateExecutionModel())

        # Set Null Risk Management Model
        self.SetRiskManagement(NullRiskManagementModel())
示例#2
0
    def Initialize(self):

        self.SetStartDate(2018, 1, 1)

        self.SetCash(100000)

        # Set zero transaction fees
        self.SetSecurityInitializer(
            lambda security: security.SetFeeModel(ConstantFeeModel(0)))

        # Use Hourly Data For Simplicity
        self.UniverseSettings.Resolution = Resolution.Hour
        self.SetUniverseSelection(
            CoarseFundamentalUniverseSelectionModel(
                self.CoarseSelectionFunction))

        # Use MeanReversionLunchBreakAlphaModel to establish insights
        self.SetAlpha(MeanReversionLunchBreakAlphaModel())

        # Equally weigh securities in portfolio, based on insights
        self.SetPortfolioConstruction(
            EqualWeightingPortfolioConstructionModel())

        # Set Immediate Execution Model
        self.SetExecution(ImmediateExecutionModel())

        # Set Null Risk Management Model
        self.SetRiskManagement(NullRiskManagementModel())
示例#3
0
    def Initialize(self):

        # -- STRATEGY INPUT PARAMETERS --
        self.k1 = 0.63
        self.k2 = 0.63
        self.rangePeriod = 20
        self.consolidatorBars = 30

        # Settings
        self.SetStartDate(2018, 10, 1)
        self.SetSecurityInitializer(lambda security: security.SetFeeModel(ConstantFeeModel(0)))
        self.SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin);

        # Universe Selection
        self.UniverseSettings.Resolution = Resolution.Minute   # it's minute by default, but lets leave this param here
        symbols = [Symbol.Create("SPY", SecurityType.Equity, Market.USA)]
        self.SetUniverseSelection(ManualUniverseSelectionModel(symbols))

        # Warming up
        resolutionInTimeSpan =  Extensions.ToTimeSpan(self.UniverseSettings.Resolution)
        warmUpTimeSpan = Time.Multiply(resolutionInTimeSpan, self.consolidatorBars)
        self.SetWarmUp(warmUpTimeSpan)

        # Alpha Model
        self.SetAlpha(DualThrustAlphaModel(self.k1, self.k2, self.rangePeriod, self.UniverseSettings.Resolution, self.consolidatorBars))

        ## Portfolio Construction
        self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())

        ## Execution
        self.SetExecution(ImmediateExecutionModel())

        ## Risk Management
        self.SetRiskManagement(MaximumDrawdownPercentPerSecurity(0.03))
示例#4
0
    def Initialize(self):

        self.SetStartDate(2019, 2, 1)  #Set Start Date
        self.SetCash(100000)  #Set Strategy Cash

        # Set zero transaction fees
        self.SetSecurityInitializer(
            lambda security: security.SetFeeModel(ConstantFeeModel(0)))

        ## Select trio of currencies to trade where
        ## Currency A = USD
        ## Currency B = EUR
        ## Currency C = GBP
        currencies = ['EURUSD', 'EURGBP', 'GBPUSD']
        symbols = [
            Symbol.Create(currency, SecurityType.Forex, Market.Oanda)
            for currency in currencies
        ]

        ## Manual universe selection with tick-resolution data
        self.UniverseSettings.Resolution = Resolution.Minute
        self.SetUniverseSelection(ManualUniverseSelectionModel(symbols))

        self.SetAlpha(
            ForexTriangleArbitrageAlphaModel(Resolution.Minute, symbols))

        ## Set Equal Weighting Portfolio Construction Model
        self.SetPortfolioConstruction(
            EqualWeightingPortfolioConstructionModel())

        ## Set Immediate Execution Model
        self.SetExecution(ImmediateExecutionModel())

        ## Set Null Risk Management Model
        self.SetRiskManagement(NullRiskManagementModel())
    def Initialize(self):

        self.SetStartDate(2018, 1, 1)  #Set Start Date
        self.SetCash(100000)  #Set Strategy Cash

        ## Initialize variables to be used in controlling frequency of universe selection
        self.week = None
        self.symbols = None

        self.SetWarmUp(100)

        ## Manual Universe Selection
        self.SetUniverseSelection(
            CoarseFundamentalUniverseSelectionModel(
                self.CoarseSelectionFunction))

        ## Set trading fees to $0
        self.SetSecurityInitializer(
            lambda security: security.SetFeeModel(ConstantFeeModel(0)))

        ## Set custom Alpha Model
        self.SetAlpha(PriceGapMeanReversionAlphaModel())

        ## Set equal-weighting Portfolio Construction Model
        self.SetPortfolioConstruction(
            EqualWeightingPortfolioConstructionModel())

        ## Set Execution Model
        self.SetExecution(ImmediateExecutionModel())

        ## Set Risk Management Model
        self.SetRiskManagement(NullRiskManagementModel())
    def Initialize(self):

        self.SetStartDate(2015, 1, 1)
        self.SetCash(100000)

        # Set zero transaction fees
        self.SetSecurityInitializer(
            lambda security: security.SetFeeModel(ConstantFeeModel(0)))

        # Select resolution
        resolution = Resolution.Hour

        # Reversion on the USD.
        symbols = [Symbol.Create("EURUSD", SecurityType.Forex, Market.Oanda)]

        # Set requested data resolution
        self.UniverseSettings.Resolution = resolution
        self.SetUniverseSelection(ManualUniverseSelectionModel(symbols))
        self.SetAlpha(IntradayReversalAlphaModel(5, resolution))

        # Equally weigh securities in portfolio, based on insights
        self.SetPortfolioConstruction(
            EqualWeightingPortfolioConstructionModel())

        # Set Immediate Execution Model
        self.SetExecution(ImmediateExecutionModel())

        # Set Null Risk Management Model
        self.SetRiskManagement(NullRiskManagementModel())

        #Set WarmUp for Indicators
        self.SetWarmUp(20)
示例#7
0
    def Initialize(self):

        self.SetStartDate(2018, 1, 1)

        self.SetCash(100000)

        # Set zero transaction fees
        self.SetSecurityInitializer(lambda security: security.SetFeeModel(ConstantFeeModel(0)))

        # 3X ETF pair tickers
        ultraLong = Symbol.Create("UGLD", SecurityType.Equity, Market.USA)
        ultraShort = Symbol.Create("DGLD", SecurityType.Equity, Market.USA)

        # Manually curated universe
        self.UniverseSettings.Resolution = Resolution.Daily
        self.SetUniverseSelection(ManualUniverseSelectionModel([ultraLong, ultraShort]))

        # Select the demonstration alpha model
        self.SetAlpha(RebalancingTripleLeveragedETFAlphaModel(ultraLong, ultraShort))

        ## Set Equal Weighting Portfolio Construction Model
        self.SetPortfolioConstruction(EqualWeightingPortfolioConstructionModel())

        ## Set Immediate Execution Model
        self.SetExecution(ImmediateExecutionModel())

        ## Set Null Risk Management Model
        self.SetRiskManagement(NullRiskManagementModel())
示例#8
0
    def Initialize(self):

        self.UniverseSettings.Resolution = Resolution.Daily

        self.SetStartDate(2018, 1, 1)  # Set Start Date
        self.SetCash(1000000)  # Set Strategy Cash

        benchmark = Symbol.Create("SPY", SecurityType.Equity, Market.USA)
        self.SetUniverseSelection(
            UncorrelatedUniverseSelectionModel(benchmark))
        self.SetAlpha(UncorrelatedUniverseSelectionAlphaModel())
        self.SetPortfolioConstruction(
            EqualWeightingPortfolioConstructionModel())
        self.SetExecution(ImmediateExecutionModel())
    def Initialize(self):

        self.SetStartDate(2018, 1, 1)

        self.SetCash(100000)

        # Set zero transaction fees
        self.SetSecurityInitializer(
            lambda security: security.SetFeeModel(ConstantFeeModel(0)))

        # Global Equity ETF tickers
        tickers = [
            "ECH", "EEM", "EFA", "EPHE", "EPP", "EWA", "EWC", "EWG", "EWH",
            "EWI", "EWJ", "EWL", "EWM", "EWM", "EWO", "EWP", "EWQ", "EWS",
            "EWT", "EWU", "EWY", "EWZ", "EZA", "FXI", "GXG", "IDX", "ILF",
            "EWM", "QQQ", "RSX", "SPY", "THD"
        ]

        symbols = [
            Symbol.Create(ticker, SecurityType.Equity, Market.USA)
            for ticker in tickers
        ]

        # Manually curated universe
        self.UniverseSettings.Resolution = Resolution.Daily
        self.SetUniverseSelection(ManualUniverseSelectionModel(symbols))

        # Use GlobalEquityMeanReversionAlphaModel to establish insights
        self.SetAlpha(MeanReversionIBSAlphaModel())

        # Equally weigh securities in portfolio, based on insights
        self.SetPortfolioConstruction(
            EqualWeightingPortfolioConstructionModel())

        # Set Immediate Execution Model
        self.SetExecution(ImmediateExecutionModel())

        # Set Null Risk Management Model
        self.SetRiskManagement(NullRiskManagementModel())
示例#10
0
    def Initialize(self):
        self.SetStartDate(2019, 4, 30)  # Set Start Date
        self.SetEndDate(2019, 5, 1)  # Set End Date
        self.SetCash(100000)  # Set Strategy Cash
        #self.AddEquity("SPY")
        self.symbol = "BTCUSD"
        #self.AddEquity(self.symbol, Resolution.Minute).Symbol
        self.AddCrypto(self.symbol, Resolution.Minute, Market.Bitfinex).Symbol
        span = 500
        longPeriod = 43200
        ema = self.EMA(self.symbol, span)
        ptvsd.break_into_debugger()

        price = Identity(self.symbol)
        ptvsd.break_into_debugger()

        self.diff_pct_close_ema = IndicatorExtensions.Over(
            IndicatorExtensions.Minus(price, ema), ema)
        ptvsd.break_into_debugger()

        self.diff_pct_close_ema_mean = IndicatorExtensions.SMA(
            self.diff_pct_close_ema, longPeriod)
        ptvsd.break_into_debugger()

        std = self.STD(self.symbol, longPeriod)
        diff_pct_close_ema_std = IndicatorExtensions.Of(
            self.diff_pct_close_ema, std)
        self.negative_abnormal = IndicatorExtensions.Minus(
            self.diff_pct_close_ema_mean,
            IndicatorExtensions.Times(diff_pct_close_ema_std, 1.96))
        self.positive_abnormal = IndicatorExtensions.Plus(
            self.diff_pct_close_ema_mean,
            IndicatorExtensions.Times(diff_pct_close_ema_std, 1.96))
        self.RegisterIndicator(self.symbol, self.diff_pct_close_ema,
                               Resolution.Minute)
        self.RegisterIndicator(self.symbol, diff_pct_close_ema_std,
                               Resolution.Minute)
        self.RegisterIndicator(self.symbol, self.diff_pct_close_ema_mean,
                               Resolution.Minute)
        self.RegisterIndicator(self.symbol, self.negative_abnormal,
                               Resolution.Minute)
        self.RegisterIndicator(self.symbol, self.positive_abnormal,
                               Resolution.Minute)

        self.SetWarmUp(longPeriod)
        #stockPlot = Chart("Trade Plot")
        # On the Trade Plotter Chart we want 2 series: trades :
        #stockPlot.AddSeries(Series("Buy", SeriesType.Scatter, 0))
        #stockPlot.AddSeries(Series("Sell", SeriesType.Scatter, 0))
        #stockPlot.AddSeries(Series("Close", SeriesType.Scatter, 0))
        #self.AddChart(stockPlot)

        # On the Deviation Chart we want serie, diff_pct_close_vs_ema
        #deviation = Chart("Deviation Degree")
        #deviation.AddSeries(Series("Deviation Degree", SeriesType.Line, 0))
        #self.AddChart(deviation)
        self.resamplePeriod = (self.EndDate - self.StartDate) / 4000
        self.AddAlpha(
            EmaReversionAlphaModel(self.symbol, self.diff_pct_close_ema,
                                   self.negative_abnormal,
                                   self.positive_abnormal,
                                   self.diff_pct_close_ema_mean,
                                   self.resamplePeriod))
        self.SetPortfolioConstruction(
            EqualWeightingPortfolioConstructionModel())
        self.SetRiskManagement(MaximumDrawdownPercentPortfolio(0.1))
        self.SetExecution(VolumeWeightedAveragePriceExecutionModel())