The error comes from passing a single
sum, which expects an iterable (like a list).
I can't quite tell what your original intent is, since you're mixing both procedural and functional styles. I'd recommend that you either incrementally sum
ZCB yourself, using the
+= operator, or else, since all your arguments are the same length, use
numpy to do vector math on them.
The reason I hesitate to rewrite your code in a functional style is because you're only using
sum() on the first part of your formula, and I'm not sure whether you meant to sum the entire thing. Leaving your formula alone, the second part will iterate and produce multiple values for ZCB:
import numpy as np sum(CP/(1+np.array(ytm))**np.array(iterations)) + (FV+CP)/((1+np.array(ytm))**np.array(iterations)) array([162407.65073366, 158404.21266146, 154482.50164677, 150656.78642701, 146896.169642 , 143206.13145474, 139553.99871209, 135986.89550577, 132528.65334532, 129123.4633484 , 125775.53903412, 122512.19342737, 119406.9801568 , 116365.77283386, 113461.4536341 , 110755.24145864, 108160.10924376, 105704.56954205, 103416.55213126, 101263.70203759, 99213.23619558, 97276.48018957, 95493.00572611, 93807.47916263, 92215.90751991, 90714.30147789, 89291.81257265, 87951.62415916, 86689.91102085, 85496.36006465])
* Be the first to Make Comment