Я хочу повысить эффективность своего кода, превратив его в массивы и циклы. Данные, с которыми я работаю, начинаются так:
ID Mapping Asset Fixed Performing Payment 2017 Payment2018 Payment2019 Payment2020
1 Loan1 1 1 1 90 30 30 30
2 Loan1 1 1 0 80 20 40 20
3 Loan1 1 0 1 60 40 10 10
4 Loan1 1 0 0 120 60 30 30
5 Loan2 ... ... ... ... ... ... ...
Итак, для каждого идентификатора (по сути, данных, отсортированных по сопоставлению, активу, фиксированному и затем исполняющемуся) я пытаюсь создать профиль для схемы оплаты.
Вектор платежа для первого идентификатора выглядит так:
PaymentVector1 PaymentVector2 PaymentVector3 PaymentVector4
1 0.33 0.33 0.33
Он представлен формулой
PaymentVector(I)=Payment(I)/Payment(1)
Вышеприведенное можно создать в массиве, при желании можно привести пример кода.
Далее, в предположении, что каждый сделанный платеж заменяется, т. е. когда в 2018 году выплачивается 30, он должен быть заменен и так далее.
Я хочу сделать профиль, который показывает оттоки (и для иллюстрации, но не обязательно в коде, в скобках притоки) для движения платежей как таковых - для ID = 1:
Payment2017 Payment2018 Payment2019 Payment2020
17 (+90) -30 -30 -30
18 N/A (+30) -10 -10
19 N/A N/A (+40) -13.3
20 N/A N/A N/A (+53.3)
поэтому, если вы смотрите вперед, строки можно представить, какой сейчас год, а столбцы представляют, какие годы приближаются.
Следовательно, в 2019 году, глядя на то, что должно быть выплачено в 2017 и 2018 годах, нет данных, потому что эти платежи в прошлом / не могут быть выплачены сейчас.
Что касается 2018 года, то, глядя на то, что должно быть выплачено в 2019 году, вы должны заплатить одну треть денег, которые у вас есть сейчас, поэтому -10.
Я работал над тем, чтобы превратить этот набор данных построчно в массив, но наверняка должен быть более быстрый способ использования массива:
Код, который я использовал до сих пор, выглядит так:
Data Want;
Set Have;
Array Vintage(2017:2020) Vintage2017-Vintage2020;
Array PaymentSchedule(2017:2020) PaymentSchedule2017-PaymentSchedule2020;
Array PaymentVector(2017:2020) PaymentVector2017-PaymentVector2020;
Array PaymentVolume(2017:2020) PaymentVolume2017-PaymentVolume2020;
do i=1 to 4;
PaymentVector(i)=PaymentSchedule(i)/PaymentSchedule(1);
end;
Я добавлю код завтра... но код все равно не работает.