Skip to content

Instantly share code, notes, and snippets.

# StuartGordonReid/PartialMoments.py Created Jun 12, 2015

Lower and Higher Partial Moments
 import numpy import numpy.random as nrand def lpm(returns, threshold, order): # This method returns a lower partial moment of the returns # Create an array he same length as returns containing the minimum return threshold threshold_array = numpy.empty(len(returns)) threshold_array.fill(threshold) # Calculate the difference between the threshold and the returns diff = threshold_array - returns # Set the minimum of each to 0 diff = diff.clip(min=0) # Return the sum of the different to the power of order return numpy.sum(diff ** order) / len(returns) def hpm(returns, threshold, order): # This method returns a higher partial moment of the returns # Create an array he same length as returns containing the minimum return threshold threshold_array = numpy.empty(len(returns)) threshold_array.fill(threshold) # Calculate the difference between the returns and the threshold diff = returns - threshold_array # Set the minimum of each to 0 diff = diff.clip(min=0) # Return the sum of the different to the power of order return numpy.sum(diff ** order) / len(returns) # Example Usage r = nrand.uniform(-1, 1, 50) print("hpm(0.0)_1 =", hpm(r, 0.0, 1)) print("lpm(0.0)_1 =", lpm(r, 0.0, 1))
to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.