2010-02-13 2 views
8

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

ответ

12

Только для полноты, поскольку я опаздываю: 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'] 

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

+0

так забавно, когда можно использовать python метод irr np во время финансового класса – moldovean

3

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

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

+0

Посмотрите эту библиотеку: http://rpy.sourceforge.net/index.html Это позволит вам вызвать R из Python без дополнительной работы. –

+1

Yup, но это в режиме обслуживания. Возможно, разумнее использовать новый RPy2. –