Я ищу финансовую библиотеку для Python, которая позволит мне провести анализ дисконтированных денежных потоков. Я огляделся и обнаружил QuantLib, который является излишним для того, что я хочу делать. Мне просто нужна небольшая библиотека, которую я могу использовать для ввода серии денежных потоков, и она выводит чистую приведенную стоимость и внутреннюю норму прибыли. У кого-нибудь есть что-то вроде этого или знаю, где я могу его найти?Базовая финансовая библиотека для Python
ответ
Только для полноты, поскольку я опаздываю: numpy имеет некоторые функции для (очень) основных финансовых расчетов. NumPy, SciPy может также использоваться, чтобы сделать расчеты из основных формул, как в R.
чистая приведенная стоимость денежных потоков
>>> cashflow = 2*np.ones(6)
>>> cashflow[-1] +=100
>>> cashflow
array([ 2., 2., 2., 2., 2., 102.])
>>> np.npv(0.01, cashflow)
105.79547647457932
получить внутреннюю норму или вернуть
>>> n = np.npv(0.01, cashflow)
>>> np.irr(np.r_[-n, cashflow])
0.010000000000000231
только Основы:
>>> [f for f in dir(np.lib.financial) if not f[0] == '_']
['fv', 'ipmt', 'irr', 'mirr', 'np', 'nper', 'npv', 'pmt', 'ppmt', 'pv', 'rate']
и необходимо следить за тем, что такое время.
Если вы действительно хотите вычислить чистую текущую стоимость (== внутренний продукт векторов для денежных потоков и коэффициентов скидки) и внутреннюю норму прибыли (== простой итеративный корневой поиск для одной переменной), тогда вы можете просто ввести код это вверх.
Я использую R гораздо больше, чем Python, так здесь является R решение:
R> data <- data.frame(CF=c(rep(2,5), 102), df=1.01^(-(1:6)))
R> data
CF df
1 2 0.9901
2 2 0.9803
3 2 0.9706
4 2 0.9610
5 2 0.9515
6 102 0.9420
R> NPV <- sum(data[,1] * data[,2])
R> print(NPV)
[1] 105.8
R>
Это создает структуру данных две колонки денежных потоков и коэффициентов дисконтирования и вычисляет NPV как сумма произведений. Таким образом, (упрощенная) шестилетняя облигация со 2% купоном в 1% кривой доходности будет стоить 105,80.
Для IRR, мы делаем примерно то же самое, но сделать NPV функцию скорости:
R> irrSearch <- function(rate) { data <- data.frame(CF=c(rep(2,5), 102),
df=(1+rate/100)^(-(1:6)));
100 - sum(data[,1] * data[,2]) }
R> uniroot(irrSearch, c(0.01,5))
R> irr <- uniroot(irrSearch, c(0.01,5))
R> irr$root
[1] 2
R>
Так «корень» в поисках внутренней нормы доходности 2% связи в мир с плоской кривой ... неудивительно 2%.
Посмотрите эту библиотеку: http://rpy.sourceforge.net/index.html Это позволит вам вызвать R из Python без дополнительной работы. –
Yup, но это в режиме обслуживания. Возможно, разумнее использовать новый RPy2. –
так забавно, когда можно использовать python метод irr np во время финансового класса – moldovean