Основная финансовая библиотека для Python - PullRequest
8 голосов
/ 14 февраля 2010

Я ищу финансовую библиотеку для Python, которая позволила бы мне проводить анализ дисконтированных денежных потоков. Я осмотрелся и нашел QuantLib, который слишком хорош для того, что я хочу сделать. Мне просто нужна небольшая библиотека, которую я могу использовать для ввода последовательности денежных потоков и получения чистой текущей стоимости и внутренней нормы прибыли. У кого-нибудь есть что-то подобное или знаете, где я могу это найти?

Ответы [ 2 ]

12 голосов
/ 25 августа 2010

Просто для полноты, так как я опоздал: 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']

и необходимо следить за временем.

3 голосов
/ 14 февраля 2010

Если вы действительно хотите рассчитать только чистую приведенную стоимость (== внутренний продукт векторов для денежных потоков и коэффициентов дисконтирования) и внутреннюю норму прибыли (== простой итеративный поиск в корне для одной переменной), тогда вы можете просто закодировать вверх.

Я использую 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%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...