@Simon it's probably not a great idea to try to change the
CustomFactor at this time. We're doing a bunch of fancy stuff in the Engine to cache instances of
Factorthat are passed the same arguments. This makes it easier for the engine to ensure that it doesn't re-compute Factors that appear in the computation tree multiple times, but has the downside of making
Factor significantly more complex than a normal Python class.
If you really want to change the initialization of
CustomFactor you'd probably want to look at the implementation of
Rank in Zipline, which is the class returned by the
rank() method. The relevant functions are
_init and the
static_identity classmethod. I'm not super happy with how that system works right now though, so I'd say you should regard the
CustomFactor constructor as a private API for the moment.
A simpler way to accomplish what you want is probably to just define a function that returns a new subclass of
CustomFactor that closes over the arguments.
An example (with illustrative but very verbose names):
def make_custom_factor_subclass(arg1, arg2):
"""Define and return a new **class** that closes over arg1 and arg2."""
inputs = [...]
def compute(self, ...):
# Do something that depends on arg1 and arg2.
# This returns a new type.
MyCustomFactor_12 = make_custom_factor_subclass(1, 2)
# Make an instance for use with a pipeline
my_custom_factor_12_instance = MyCustomFactor_12()
The material on this website is provided for informational purposes only and does not constitute an offer to sell, a solicitation to buy, or a recommendation or endorsement for any security or strategy, nor does it constitute an offer to provide investment advisory services by Quantopian. In addition, the material offers no opinion with respect to the suitability of any security or specific investment. No information contained herein should be regarded as a suggestion to engage in or refrain from any investment-related course of action as none of Quantopian nor any of its affiliates is undertaking to provide investment advice, act as an adviser to any plan or entity subject to the Employee Retirement Income Security Act of 1974, as amended, individual retirement account or individual retirement annuity, or give advice in a fiduciary capacity with respect to the materials presented herein. If you are an individual retirement or other investor, contact your financial advisor or other fiduciary unrelated to Quantopian about whether any given investment idea, strategy, product or service described herein may be appropriate for your circumstances. All investments involve risk, including loss of principal. Quantopian makes no guarantees as to the accuracy or completeness of the views expressed in the website. The views are subject to change, and may have become unreliable for various reasons, including changes in market conditions or economic circumstances.