RATE()

Автор ape, 17 июня 2013, 08:41

0 Пользователи и 1 гость просматривают эту тему.

ape

Нашёл интересную ошибку: RATE() function produces different results as some versions of MS Office
--
Тестовые файлы из описания ошибки прилагаю. Ошибка открыта ещё в 3.5.7, но присутствует и в 4.1.0


[вложение удалено Администратором]

greenman

AOO 3.4.1 - ошибка присутствует.

greenman

#2
Русский пример я не понял. Английский, вроде, проще.

У кого-то есть $250. И он хочет получать $35 в год бесконечно долго. Это будет 35/250 = 0.14, или 14% годовых.

При цели получать эти $35 в год в течении 50 лет
RATE(50, 35, -250, 0) returns 0.13979829

Норма прибыли 13.98%

Финансовыми функциями не пользуюсь. Если мне надо посчитать целевую сумму вклада при 7% годовых, делаю  X*1.07



Hasim

Английский пример из Apache - то же самое.
ЦитироватьReturns the constant interest rate per period of an annuity.
Syntax
RATE(NPer; Pmt; PV; FV; Type; Guess)
NPer is the total number of periods, during which payments are made (payment period).
Pmt is the constant payment (annuity) paid during each period.
PV is the cash value in the sequence of payments.
FV (optional) is the future value, which is reached at the end of the periodic payments.
Type (optional) is the due date of the periodic payment, either at the beginning or at the end of a period.
Guess (optional) determines the estimated value of the interest with iterative calculation.
In the OpenOffice.org Calc functions, parameters marked as "optional" can be left out only when no parameter follows. For example, in a function with four parameters, where the last two parameters are marked as "optional", you can leave out parameter 4 or parameters 3 and 4, but you cannot leave out parameter 3 alone.
Example
What is the constant interest rate for a payment period of 3 periods if 10 currency units are paid regularly and the present cash value is 900 currency units.
=RATE(3;10;900) = -121% The interest rate is therefore 121%.

Где вы взяли английский пример?

Из английского LibreOffice?

greenman

#4
Цитата: Hasim от 17 июня 2013, 14:19
Где вы взяли английский пример?
Из комментариев к багу.

Там есть и ссылка на статью в википедии. Русская страничка (очень краткая по сравнению с английской)  ссылается на
http://www.cfin.ru/finanalysis/inexcel/1-1.shtml

Hasim

#5
ЦитироватьУ кого-то есть $250.
При цели получать эти $35 в год в течении 50 лет
RATE(50, 35, -250, 0) returns 0.13979829

А почему  -250 - отрицательное?

Какой смысл в этом числе (ТС: денежная величина ряда платежей), отрицательное оно или положительное?

Hasim

#6
Возьмем 1 период
RATE(1, 35, -250, 0) = -0,86 (отрицательное)

И что это значит?
Почему -250 (минус)?

Положили 250 на 1 год под 14%
получили норму прибыли -0,86 ( минус 86% - это что такое?)

Кстати,
RATE(1;35;-250;0)=RATE(1;-35;250;0)
и что это значит?

PS. А еще спрашивают, почему происходят мировые финансовые кризисы. Потому что считают, не понимая того, что считают.

greenman

#7
Цитата: Hasim от 17 июня 2013, 14:24И что это значит?
Почему -250 (минус)?
Хотим истратить 250 (поэтому минус) за 1 год, получив 35. Остальное, значит, профукали. Точнее, вычисления бессмысленны.

250/35 ~ 7.1

Т.е. вычисления имеют смысл, если КПЕР 8 и более. Не проверял, из общих соображений.

Проверил в gnumeric
=rate(1;35;-250;0) -> -86,00%
=rate(7;35;-250;0) -> -0,50%
=rate(8;35;-250;0) -> 2,59%
=rate(9;35;-250;0) -> 4,89%


Цитата: Hasim от 17 июня 2013, 14:24PS. А еще спрашивают, почему происходят мировые финансовые кризисы. Потому что считают, не понимая того, что считают.
В таблицах серьезные деньги не считают. Вы же сталкивались сами с ограничением разрядности и точности в таблицах.

Hasim

Цитата: greenman от 17 июня 2013, 14:30В таблицах серьезные деньги не считают. Вы же сталкивались сами с ограничением разрядности и точности в таблицах.

$250 и 5 лет, например, совсем не серьезные расчеты.
Запускать для них суперкомпьютер Министерства финансов как-то несолидно.

greenman

#9
Суперкомпьютеры, в общем-то, не при чём. Класс Money

Hasim

#10
Дело не в точности расчетов, а в их смысле.

А описанный баг возникает тривиально - расчет RATE ведет итерациями и на каком-то этапе заданной в алгоритме расчета точности (и количества итераций) не хватает.
Исправляется в исходниках тривиально, но это никому не нужно, тем более, что почти такая же точность задана в Excel.
Так что, все просто скопировано с Excel.

Я не про то. Я про описание RATE в СПРАВКЕ. Очень туманно и непонятно, как на русском, так и на английском. Это беда Свободного офиса - нет подробных и ясных примеров использования функций (и вообще всякого встроенного функционала).

greenman

Цитата: Hasim от 17 июня 2013, 16:35
Так что, все просто скопировано с Excel.
Как можно сопировать закрытый код? Вот код из гнумерика могли бы скопировать - он считает правильно.

А по поводу описаний - не уверен, что в экселе они лучше. В любом случае, они непонятны в первую очередь потому, что мы не знаем финансовых функций.

Попробуйте объяснить пятикласснику, что делют в калке функции sin или log.

Hasim

Все очень непонятно там написано.

Хотя должно быть, например, так

RATE(5, 2000, 238, 0) = 0,1847962478

5 - число периодов
2000 - добавляемая к вкладу сумма (в начале или в конце каждого периода)
238 - начальная сумма вклада
0 - требуемая сумма в конце всех периодов
...

Тогда было бы все понятно.

ape

Цитата: ape от 17 июня 2013, 07:41Нашёл интересную ошибку: RATE() function produces different results as some versions of MS Office
Eike Rathke - FIXED: вчера - 4.1.0; сегодня - 4.0.5 и 3.6.7. В ежедневных сборках будет через 24-48 часов.

ape

#14
Цитата: ape от 18 июня 2013, 19:09Eike Rathke - FIXED: вчера - 4.1.0; сегодня - 4.0.5 и 3.6.7. В ежедневных сборках будет через 24-48 часов.
Пока есть только здесь (т.е. в 4.0.5) - http://dev-builds.libreoffice.org/daily/libreoffice-4-0/Win-x86@6/2013-06-19_03.27.42/
В 4.1.0 от 19 июня без изменений (на рисунке - слева).


[вложение удалено Администратором]