Lean  $LEAN_TAG$
QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel Class Reference

Provides an implementation of IPortfolioConstructionModel that generates percent targets based on the Insight.Weight. The target percent holdings of each Symbol is given by the Insight.Weight from the last active Insight for that symbol. For insights of direction InsightDirection.Up, long targets are returned and for insights of direction InsightDirection.Down, short targets are returned. If the sum of all the last active Insight per symbol is bigger than 1, it will factor down each target percent holdings proportionally so the sum is 1. It will ignore Insight that have no Insight.Weight value. More...

Inheritance diagram for QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel:
[legend]

Public Member Functions

 InsightWeightingPortfolioConstructionModel (IDateRule rebalancingDateRules, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of InsightWeightingPortfolioConstructionModel More...
 
 InsightWeightingPortfolioConstructionModel (PyObject rebalance, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of InsightWeightingPortfolioConstructionModel More...
 
 InsightWeightingPortfolioConstructionModel (Func< DateTime, DateTime?> rebalancingFunc, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of InsightWeightingPortfolioConstructionModel More...
 
 InsightWeightingPortfolioConstructionModel (Func< DateTime, DateTime > rebalancingFunc, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of InsightWeightingPortfolioConstructionModel More...
 
 InsightWeightingPortfolioConstructionModel (TimeSpan timeSpan, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of InsightWeightingPortfolioConstructionModel More...
 
 InsightWeightingPortfolioConstructionModel (Resolution resolution=Resolution.Daily, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of InsightWeightingPortfolioConstructionModel More...
 
- Public Member Functions inherited from QuantConnect.Algorithm.Framework.Portfolio.EqualWeightingPortfolioConstructionModel
 EqualWeightingPortfolioConstructionModel (IDateRule rebalancingDateRules, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of EqualWeightingPortfolioConstructionModel More...
 
 EqualWeightingPortfolioConstructionModel (Func< DateTime, DateTime?> rebalancingFunc, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of EqualWeightingPortfolioConstructionModel More...
 
 EqualWeightingPortfolioConstructionModel (Func< DateTime, DateTime > rebalancingFunc, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of EqualWeightingPortfolioConstructionModel More...
 
 EqualWeightingPortfolioConstructionModel (PyObject rebalance, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of EqualWeightingPortfolioConstructionModel More...
 
 EqualWeightingPortfolioConstructionModel (TimeSpan timeSpan, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of EqualWeightingPortfolioConstructionModel More...
 
 EqualWeightingPortfolioConstructionModel (Resolution resolution=Resolution.Daily, PortfolioBias portfolioBias=PortfolioBias.LongShort)
 Initialize a new instance of EqualWeightingPortfolioConstructionModel More...
 
- Public Member Functions inherited from QuantConnect.Algorithm.Framework.Portfolio.PortfolioConstructionModel
 PortfolioConstructionModel (Func< DateTime, DateTime?> rebalancingFunc)
 Initialize a new instance of PortfolioConstructionModel More...
 
 PortfolioConstructionModel (Func< DateTime, DateTime > rebalancingFunc=null)
 Initialize a new instance of PortfolioConstructionModel More...
 
virtual IEnumerable< IPortfolioTargetCreateTargets (QCAlgorithm algorithm, Insight[] insights)
 Create portfolio targets from the specified insights More...
 
virtual void OnSecuritiesChanged (QCAlgorithm algorithm, SecurityChanges changes)
 Event fired each time the we add/remove securities from the data feed More...
 

Protected Member Functions

override bool ShouldCreateTargetForInsight (Insight insight)
 Method that will determine if the portfolio construction model should create a target for this insight More...
 
override Dictionary< Insight, double > DetermineTargetPercent (List< Insight > activeInsights)
 Will determine the target percent for each insight More...
 
virtual double GetValue (Insight insight)
 Method that will determine which member will be used to compute the weights and gets its value More...
 
- Protected Member Functions inherited from QuantConnect.Algorithm.Framework.Portfolio.EqualWeightingPortfolioConstructionModel
bool RespectPortfolioBias (Insight insight)
 Method that will determine if a given insight respects the portfolio bias More...
 
- Protected Member Functions inherited from QuantConnect.Algorithm.Framework.Portfolio.PortfolioConstructionModel
void SetPythonWrapper (PortfolioConstructionModelPythonWrapper pythonWrapper)
 Used to set the PortfolioConstructionModelPythonWrapper instance if any More...
 
virtual List< InsightGetTargetInsights ()
 Gets the target insights to calculate a portfolio target percent for More...
 
void SetRebalancingFunc (PyObject rebalance)
 Python helper method to set the rebalancing function. This is required due to a python net limitation not being able to use the base type constructor, and also because when python algorithms use C# portfolio construction models, it can't convert python methods into func nor resolve the correct constructor for the date rules, timespan parameter. For performance we prefer python algorithms using the C# implementation More...
 
virtual bool IsRebalanceDue (Insight[] insights, DateTime algorithmUtc)
 Determines if the portfolio should be rebalanced base on the provided rebalancing func, if any security change have been taken place or if an insight has expired or a new insight arrived If the rebalancing function has not been provided will return true. More...
 
void RefreshRebalance (DateTime algorithmUtc)
 Refresh the next rebalance time and clears the security changes flag More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from QuantConnect.Algorithm.Framework.Portfolio.PortfolioConstructionModel
static Insight[] FilterInvalidInsightMagnitude (IAlgorithm algorithm, Insight[] insights)
 Helper class that can be used by the different IPortfolioConstructionModel implementations to filter Insight instances with an invalid Insight.Magnitude value based on the IAlgorithmSettings More...
 
- Protected Attributes inherited from QuantConnect.Algorithm.Framework.Portfolio.PortfolioConstructionModel
PortfolioConstructionModelPythonWrapper PythonWrapper
 This is required due to a limitation in PythonNet to resolved overriden methods. When Python calls a C# method that calls a method that's overriden in python it won't run the python implementation unless the call is performed through python too. More...
 
- Properties inherited from QuantConnect.Algorithm.Framework.Portfolio.PortfolioConstructionModel
virtual bool RebalanceOnSecurityChanges = true [get, set]
 True if should rebalance portfolio on security changes. True by default More...
 
virtual bool RebalanceOnInsightChanges = true [get, set]
 True if should rebalance portfolio on new insights or expiration of insights. True by default More...
 
IAlgorithm Algorithm [get]
 The algorithm instance More...
 

Detailed Description

Provides an implementation of IPortfolioConstructionModel that generates percent targets based on the Insight.Weight. The target percent holdings of each Symbol is given by the Insight.Weight from the last active Insight for that symbol. For insights of direction InsightDirection.Up, long targets are returned and for insights of direction InsightDirection.Down, short targets are returned. If the sum of all the last active Insight per symbol is bigger than 1, it will factor down each target percent holdings proportionally so the sum is 1. It will ignore Insight that have no Insight.Weight value.

Definition at line 35 of file InsightWeightingPortfolioConstructionModel.cs.

Constructor & Destructor Documentation

◆ InsightWeightingPortfolioConstructionModel() [1/6]

QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.InsightWeightingPortfolioConstructionModel ( IDateRule  rebalancingDateRules,
PortfolioBias  portfolioBias = PortfolioBias.LongShort 
)

Initialize a new instance of InsightWeightingPortfolioConstructionModel

Parameters
rebalancingDateRulesThe date rules used to define the next expected rebalance time in UTC
portfolioBiasSpecifies the bias of the portfolio (Short, Long/Short, Long)

Definition at line 43 of file InsightWeightingPortfolioConstructionModel.cs.

◆ InsightWeightingPortfolioConstructionModel() [2/6]

QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.InsightWeightingPortfolioConstructionModel ( PyObject  rebalance,
PortfolioBias  portfolioBias = PortfolioBias.LongShort 
)

Initialize a new instance of InsightWeightingPortfolioConstructionModel

Parameters
rebalanceRebalancing func or if a date rule, timedelta will be converted into func. For a given algorithm UTC DateTime the func returns the next expected rebalance time or null if unknown, in which case the function will be called again in the next loop. Returning current time will trigger rebalance. If null will be ignored
portfolioBiasSpecifies the bias of the portfolio (Short, Long/Short, Long)

This is required since python net can not convert python methods into func nor resolve the correct constructor for the date rules parameter. For performance we prefer python algorithms using the C# implementation

Definition at line 60 of file InsightWeightingPortfolioConstructionModel.cs.

◆ InsightWeightingPortfolioConstructionModel() [3/6]

QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.InsightWeightingPortfolioConstructionModel ( Func< DateTime, DateTime?>  rebalancingFunc,
PortfolioBias  portfolioBias = PortfolioBias.LongShort 
)

Initialize a new instance of InsightWeightingPortfolioConstructionModel

Parameters
rebalancingFuncFor a given algorithm UTC DateTime returns the next expected rebalance time or null if unknown, in which case the function will be called again in the next loop. Returning current time will trigger rebalance.
portfolioBiasSpecifies the bias of the portfolio (Short, Long/Short, Long)

Definition at line 73 of file InsightWeightingPortfolioConstructionModel.cs.

◆ InsightWeightingPortfolioConstructionModel() [4/6]

QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.InsightWeightingPortfolioConstructionModel ( Func< DateTime, DateTime >  rebalancingFunc,
PortfolioBias  portfolioBias = PortfolioBias.LongShort 
)

Initialize a new instance of InsightWeightingPortfolioConstructionModel

Parameters
rebalancingFuncFor a given algorithm UTC DateTime returns the next expected rebalance UTC time. Returning current time will trigger rebalance. If null will be ignored
portfolioBiasSpecifies the bias of the portfolio (Short, Long/Short, Long)

Definition at line 85 of file InsightWeightingPortfolioConstructionModel.cs.

◆ InsightWeightingPortfolioConstructionModel() [5/6]

QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.InsightWeightingPortfolioConstructionModel ( TimeSpan  timeSpan,
PortfolioBias  portfolioBias = PortfolioBias.LongShort 
)

Initialize a new instance of InsightWeightingPortfolioConstructionModel

Parameters
timeSpanRebalancing frequency
portfolioBiasSpecifies the bias of the portfolio (Short, Long/Short, Long)

Definition at line 96 of file InsightWeightingPortfolioConstructionModel.cs.

◆ InsightWeightingPortfolioConstructionModel() [6/6]

QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.InsightWeightingPortfolioConstructionModel ( Resolution  resolution = Resolution.Daily,
PortfolioBias  portfolioBias = PortfolioBias.LongShort 
)

Initialize a new instance of InsightWeightingPortfolioConstructionModel

Parameters
resolutionRebalancing frequency
portfolioBiasSpecifies the bias of the portfolio (Short, Long/Short, Long)

Definition at line 107 of file InsightWeightingPortfolioConstructionModel.cs.

Member Function Documentation

◆ ShouldCreateTargetForInsight()

override bool QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.ShouldCreateTargetForInsight ( Insight  insight)
protectedvirtual

Method that will determine if the portfolio construction model should create a target for this insight

Parameters
insightThe insight to create a target for
Returns
True if the portfolio should create a target for the insight

Reimplemented from QuantConnect.Algorithm.Framework.Portfolio.PortfolioConstructionModel.

Definition at line 119 of file InsightWeightingPortfolioConstructionModel.cs.

◆ DetermineTargetPercent()

override Dictionary<Insight, double> QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.DetermineTargetPercent ( List< Insight activeInsights)
protectedvirtual

Will determine the target percent for each insight

Parameters
activeInsightsThe active insights to generate a target for
Returns
A target percent for each insight

Reimplemented from QuantConnect.Algorithm.Framework.Portfolio.EqualWeightingPortfolioConstructionModel.

Definition at line 129 of file InsightWeightingPortfolioConstructionModel.cs.

Here is the call graph for this function:

◆ GetValue()

virtual double QuantConnect.Algorithm.Framework.Portfolio.InsightWeightingPortfolioConstructionModel.GetValue ( Insight  insight)
protectedvirtual

Method that will determine which member will be used to compute the weights and gets its value

Parameters
insightThe insight to create a target for
Returns
The value of the selected insight member

Reimplemented in QuantConnect.Algorithm.Framework.Portfolio.ConfidenceWeightedPortfolioConstructionModel.

Here is the caller graph for this function:

The documentation for this class was generated from the following file: