М.Двач / Математика

28 Кб, 800x498
непрерывный сложный процент с комиссией 14 дек 2019, 02:48 62830 В конец треда | Веб

Сап /math/, я принес тебе задачу. Я назвал это непрерывным сложным процентом с комиссией.

Давайте предположим, что у нас есть депозит в P рублей в начале. Также у нас есть r процентов за, скажем, день (он же номинальная процентная ставка).Но в отличии от обычной задачи о сложном проценте, когда у нас есть конечное число реинвестиций, наш процесс реинвестирования непрерывен, или, другими словами, мы можем реинвестировать наш накопленный процент в любой момент. Эта задача была решена Бернулли много веков назад, и к концу дня у нас на счету будет А*е рублей.

НО, что если бы у нас все еще была возможность постоянно реинвестировать наши проценты, но это стоило бы нам определенного количества денег (назовем это комиссией) f. Тогда прибыль от нашего реинвестирования зависит от того, как часто мы реинвестируем эти проценты. Если мы будем реинвестировать слишком часто, комиссия будет даже уменьшать наши деньги. Напротив, если мы реинвестируем слишком редко, тогда мы теряем ключевые преимущества сложного процента. Таким образом, должна существовать некоторая оптимальная скорость реинвестирования (и, конечно, она также зависит от текущей суммы денег на нашем счете).

Итак, вопрос: как рассчитать этот оптимальный показатель?

Точное решение с доказательствами - лучше всего.
Приближенное численное решение с конкретными числами приветствуется.
Ссылки на статьи, которые я, вероятно, пропустил в гугле, также приветствуются (уверен, у кого-то до меня был такой же вопрос).

Ответы843

2 14 дек 2019, 14:40 2 62836

Выглядит как задача оптимального управления. Можешь что-то почитать на эту тему в целом.

Я могу предложить идею для наивного подхода, по нему можешь и сам посчитать. Но пока хз, корректно ли полученное таким способом решение.

Пусть нужно максимизировать прибыль на момент времени T. Предположим, что мы имеем право реинвестировать только один раз за это время. Тогда нужно только подобрать один оптимальный момент времени t1, то есть одно число.
После того, как ты подобрал и зафиксировал t1, можно решить аналогичную задачу на промежутке [t1,T] и найти t2. И так далее.
За конечное число шагов придёшь к моменту, когда дальше реинвестировать уже вообще нельзя без потерь.

Формулы должны получиться довольно простые. Но, повторюсь, это наивный подход. Тут оптимизируется только один момент времени при учёте фиксированных предыдущих. Какой-то осмысленный ответ мы получим, но хз, будет ли он оптимальным в общем смысле.

Ответы843

27 Кб, 1617x380
3 14 дек 2019, 18:02 3 62843

>>62830 (OP)
>>62836
UPD

Сейчас понял, что плохо описал, чего же я хочу. Нарисую картину:

Допустим есть условно два счета: Счет 1 (основной) и Счет 2 (процентный). В начальный момент времени ты кладеш на свой основной Счет 1 некое количество денег Р. На процентный Счет 2 непрерывно капает процент от текущей сумы на Счету 1, тоесть линейная функция от времени t с неким процент процентным коэфициентом r (процент за еденицу этого самого времени. Для реальных задач время может измеряться в часах с процентом 1 или в сутках с процентом 24, что одно и тоже). Когда деньги находятся на Счету 2, они НЕ влияют на скорость роста денег на этом же счету. Владелец счетов сам решает, когда (то сам выбирает моменты времени t_n) ему прибавлять свои деньги со Счета 2 в Счет 1 для увеличения сумарной прибыли. Но при этом за каждый такой перевод накопленых на Счету 2 денег на Счет 1 изымаеться фиксированная комиссия в размере f.
Теперь вопрос: когда стоит переводить деньги со Счета 2 на Счет 1, так что бы сумарный рост денег (за условних m = 100 единиц времени) на Счету 1 был максимальным. Ну или же чему должна быть равна разница t_n - t_(n-1) в зависимости от размера процента и текущего баланса на Счету 1.

Пикрил показывает, как это выглядит.
Надеюсь, теперь стало немного понятнее, что я имел ввиду изначально, когда говрил об "оптимальной скорости реинвестирования".

4 14 дек 2019, 18:43 4 62844

Все это выглядит как задача для машинного обучения. Если бы мне было нужно что-то такое решить, я бы смотрел в сторону reinforcement learning, в частности марковских процессов принятия решений.

Ответы845

# OP 5 14 дек 2019, 18:53 5 62845

>>62844
Это действетельно так сложно? Мне почему-то казалось, что есть простое аналитическое решение, но только я не могу до него додуматься

Ответы846

6 14 дек 2019, 19:53 6 62846

>>62845
Может и есть простое решение, но мы тоже до него не можем додуматься ну или не особо стараемся, ко-ко-ко. Я вижу такие сложности:

1. В формулах на твоём пике многочлены больших n-й степени от переменных t1, ..., tn. Известно, что корни таких многочленов (и, соответственно, точки максимума) не всегда возможно найти аналитически (в радикалах). Есть наука, занимающаяся аналитическим решением подобных вещей, но этим мало кто занимается, и на этой доске тебе вряд ли отгрузят нужных алгоритмов.
С другой стороны, твои многочлены выглядят достаточно однообразно, что даёт некоторую надежду. Если какой-нибудь олимпиадник в них позалипает, то может и найдёт тебе простое решение. Из меня хуёвый олимпиадник и залипать на многочлены я не хочу, поэтому просто делюсь теми идеями, какие есть.

2. Число реинвестирований n заранее неизвестно. То есть, допустим, если ты делаешь вклад на миллисекунду, при этом начальный вклад мизерный, процент по вкладу мизерный, а комиссия конская, то оптимальным решением будет вообще не делать никаких реинвестирований, а просто забрать свои деньги через миллисекунду. То есть в таком случае оптимальным будет n=0.
А это значит, что "общая аналитическая формула" должна тебе давать не просто размеры промежутков времени между реинвестированиями, а ещё и количество этих промежутков. Одно это делает задачу слегка нестандартной.

Машинное обучение тут, имхо, излишне. Численно можно попробовать решить с помощью обычной оптимизации.
Итак, пусть фиксировано число T. Пусть тебе нужно, чтобы на момент времени T у тебя было как можно больше денег на процентном счёте. У тебя есть семейство функций:
E1(t1), E2(t1,t2), E3(t1,t2,t3),...
где En(t1,...,tn) показывает, сколько денег у тебя будет на процентном счёте, если ты сделаешь n реинвестирований и если промежутки времени между этими реинвестированиями будут t1,...,tn. Эти функции у тебя перечислены в самом правом столбце таблицы, только в самом конце вместо t надо будет подставить T (которое нам заранее известно).

Начинаешь решать с n=0, потом на каждом шаге увеличиваешь n на единицу.
На каждом шаге надо будет решить n-мерную задачу условной оптимизации:
En(t1,...,tn)->max, при условиях
ti>0, t1+...+tn<T.
Алгоритмы для решения такой задачи можешь нагуглить, да и в принципе они есть во всех пакетах, или на чём ты там будешь кодить эту хуйню. Нужно понадеяться, что там не будет всратых локальных максимумов или что алгоритм сможет эти локальные максимумы обойти.

Прекращаешь вычисления, когда на n+1 шаге окажется, что у тебя максимальное значение En+1 оказывается меньше, чем было максимальное значение En. Это вроде бы означает, что ты упёрся в потолок и больше реинвестирований впихнуть никак не можешь. Ответом будет оптимальное значение t1+...+tn для n-го шага, которое ты уже получил с помощью оптимизации.

6 14 дек 2019, 19:53 6 62846

>>62845

Машинное обучение тут, имхо, излишне. Численно можно попробовать решить с помощью обычной оптимизации.
Итак, пусть фиксировано число T. Пусть тебе нужно, чтобы на момент времени T у тебя было как можно больше денег на процентном счёте. У тебя есть семейство функций:
E1(t1), E2(t1,t2), E3(t1,t2,t3),...
где En(t1,...,tn) показывает, сколько денег у тебя будет на процентном счёте, если ты сделаешь n реинвестирований и если промежутки времени между этими реинвестированиями будут t1,...,tn. Эти функции у тебя перечислены в самом правом столбце таблицы, только в самом конце вместо t надо будет подставить T (которое нам заранее известно).

Начинаешь решать с n=0, потом на каждом шаге увеличиваешь n на единицу.
На каждом шаге надо будет решить n-мерную задачу условной оптимизации:
En(t1,...,tn)->max, при условиях
ti>0, t1+...+tn<T.
Алгоритмы для решения такой задачи можешь нагуглить, да и в принципе они есть во всех пакетах, или на чём ты там будешь кодить эту хуйню. Нужно понадеяться, что там не будет всратых локальных максимумов или что алгоритм сможет эти локальные максимумы обойти.

Прекращаешь вычисления, когда на n+1 шаге окажется, что у тебя максимальное значение En+1 оказывается меньше, чем было максимальное значение En. Это вроде бы означает, что ты упёрся в потолок и больше реинвестирований впихнуть никак не можешь. Ответом будет оптимальное значение t1+...+tn для n-го шага, которое ты уже получил с помощью оптимизации.

Показать весь текст
Ответы847849

7 14 дек 2019, 19:57 7 62847

>>62846
Разметка немного поехала в последних двух абзацах. Имеются в виду нижние индексы, то есть tn, En+1 и так далее, а не умножение на n.

8 14 дек 2019, 22:02 8 62849

>>62846
Упс, нашёл ошибку.
>Эти функции у тебя перечислены в самом правом столбце таблицы, только в самом конце вместо t надо будет подставить T (которое нам заранее известно).
Вместо t надо подставить не T, а T-t1-...-tn, то есть не весь большой промежуток времени, а только его самый последний кусочек, от последнего реинвестирования и до конца периода наблюдений. Вроде так.

Ответы850

9 14 дек 2019, 22:25 9 62850

>>62849

Так как ты единственный здесь актичный анон, приглашаю в мой тред в /b/ https://2ch.hk/b/res/209423213.html (М)
Как-то сложно ты описал... Я не особо математик, если что, но если упростить, то должен понять. А ещё ты походу напутал сои основной и процентные счета, но не уверен.

Смотри, период времени нашего депозита можеш быть произвольно большой. Какое-то фиксированное число 100 единиц времени я привел просто что бы можно было осознать, к чему мы стремимся.

Что мне в действительности нужно, так это определить, через какое время или при какой суме на процентном Счете 2(что легко пересчитываеться через время, так как зависимость по-сути линейна) нужно переводить деньги на основной Счет 1, что бы дальнейшая прибыть была максимальной, и так далее, и так далее...

На реальных числах:
Основной вклад 1000 руб.
Процент 0.1 за единицу времени
Комиссия 50 руб

Итого, если сделать первый перевод сразу же после того, как ты положил деньги на основной счет, то у тебя получиться
Основной - 950 руб. Ну и если так продолжать то ты все истратишь.

Если подождать 0.5 единиц времени, то на втором счету накопиться 50 руб. Если сделать перевод в этот момент, то на основном счету будет:
1000 - 50 (комиссия) + 50 (процент со Счета 2) =1000. Тоесть ничего не измениться, и если так продолжать, то в итоге мы ничего не заработаем.

Напротив, если подождать условних 10 единиц времени и перевсти после, то на основном счету будет:
1000 - 50 (комиссия) + 1000 (процент со Счета 2) = 1950 и это уже прибыль и так далее. НО в этом варианте не стоило бы сделать несколько переводов раньше, что бы через 10 едениц времени сума была большей чем 1950?

Соответственно должно существовать какое-то отптимальное время, когда нужно переводить деньги на основной счет (максимумизируя прибыль), но как его найти?

Обновить тред
« /math/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion