MAINT: Clean up net calculations.

- Combine the net value and exposure functions into `calc_net` since
  they use the same logic.

- Change the logic to handle on empty list to using the a start value of
  0.0. More concise, and reduces the number of return points from the
  function to one.
This commit is contained in:
Eddie Hebert
2015-09-25 16:43:34 -04:00
parent c88412e3f1
commit 20c64b591f
@@ -55,11 +55,9 @@ def calc_position_values(amounts,
]
def calc_net_value(position_values):
if len(position_values) == 0:
return np.float64(0)
return sum(position_values)
def calc_net(values):
# Returns 0.0 if there are no values.
return sum(values, np.float64())
def calc_position_exposures(amounts,
@@ -108,13 +106,6 @@ def calc_gross_value(long_value, short_value):
return long_value + abs(short_value)
def calc_net_exposure(position_exposures):
if len(position_exposures) == 0:
return np.float64(0)
return sum(position_exposures)
def calc_position_stats(pt):
amounts = []
last_sale_prices = []
@@ -143,10 +134,10 @@ def calc_position_stats(pt):
long_exposure = calc_long_exposure(position_exposures)
short_exposure = calc_short_exposure(position_exposures)
gross_exposure = calc_gross_exposure(long_exposure, short_exposure)
net_exposure = calc_net_exposure(position_exposures)
net_exposure = calc_net(position_exposures)
longs_count = calc_longs_count(position_exposures)
shorts_count = calc_shorts_count(position_exposures)
net_value = calc_net_value(position_values)
net_value = calc_net(position_values)
return PositionStats(
long_value=long_value,