class_docstr: Calculates the percent change over the given window_length.
  
  **Default Inputs:** None
  
  **Default Window Length:** None
  
  Notes
  -----
  Percent change is calculated as ``(new - old) / abs(old)``.
class_docstr_tok: ["Calculates","the","percent","change","over","the","given","window_length",".","*","*","Default","Inputs",":","*","*","None","*","*","Default","Window","Length",":","*","*","None","Notes","--","--","-","Percent","change","is","calculated","as","``","(","new","-","old",")","\/","abs","(","old",")","``","."]
code: def compute(self, today, assets, out, values):
      out[:] = (values[-1] - values[0]) / abs(values[0])
  
imports: from numbers import Number
  from numpy import arange, average, clip, copyto, exp, fmax, full, isnan, log, NINF, sqrt, sum, unique
  from zipline.pipeline.data import EquityPricing
  from zipline.utils.input_validation import expect_types
  from zipline.utils.math_utils import nanargmax, nanmax, nanmean, nanstd, nansum
  from zipline.utils.numpy_utils import float64_dtype, ignore_nanwarnings
  from .factor import CustomFactor
  from ..mixins import SingleInputMixin
label_desc: Use image node_id 2 for calling the PercentChange obj's underlying member method code with example usage: obj.compute(today, assets, out, values) without return types