Back to Community
New Pipeline Features: PercentChange and peer_count

Hi all,

We have made two small additions to Pipeline:

  1. PercentChange: a built-in Factor that calculates the percent change of an input over a given window length
  2. peer_count: a method called on Classifiers that gives the number of occurrences of each distinct category in the parent Classifier

PercentChange takes any numeric BoundColumn as its input, as well as a window length of at least 2. It computes the percent change between the value corresponding to the beginning of the lookback window and the current day. For example, PercentChange with a window length of 2 would compute the daily percent change for all days in the specified range. This Factor is virtually identical to the CustomFactor shown here, but we now account for the use of negative numbers by taking the absolute value of the denominator in the percent change calculation:

(new_value - old_value) / abs(old_value)

You should proceed with caution when your data contains negative numbers, as the percent change formula can sometimes give counter-intuitive results

peer_count is a Classifier method that counts, for each Classifier category, the total number of assets that share the same category label. Classifiers output categorical data, and it can be useful to not only know the category that an asset falls under, but also the total number of assets that belong to that category. For example, you might want to filter out outlier categories that contain a small number of assets. This Filter, as well as a few other examples, are demonstrated in the attached notebook.

Thanks for reading!

  • Peter
Loading notebook preview...
Notebook previews are currently unavailable.
Disclaimer

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.

2 responses

Thanks Peter! What does PercentChange return if the old value is 0 but the new value is not?

@Joakim Great question! When old_value is 0, there are three cases worth noting.

If new_value > 0, the output is the numpy constant positive infinity
If new_value < 0, the output is negative infinity
If new_value is 0, the output is NaN