Алексей Бачеров
Алексей Бачеров личный блог
27 мая 2020, 15:33

Профессиональный инвестиционный калькулятор на Python

Продолжаю сидеть на самоизоляции и учусь программировать на Python. Написал полноценный калькулятор для сравнения двух любых активов.

Считает такие показатели как:

✅ Ожидаемая доходность
✅ Волатильность
✅ Коэффициент Шарпа для каждого актива
✅ Корреляцию
✅ Бету
✅ Альфу
✅ Долю волатильности исследуемого актива в базовом (удобно для сравнения с индексными фондами или индексами, если их брать в качестве базового актива)
✅ Коэффициент Трейнора
✅ Альфу Дженсена

Профессиональный инвестиционный калькулятор на Python

Можно задать период на котором необходимо произвести расчеты. Строить графики для сравнения.

Профессиональный инвестиционный калькулятор на Python
Профессиональный инвестиционный калькулятор на Python
Калькулятор удобен для оценки эффективности инвестиций в различные фонды, спекулятивные и/или алгоритмические стратегии, сравнения отдельных акций с индексами и между собой.

При этом удалось реализовать расчет не только классическим способом, но и с использованием весового фактора (когда последним значениям присваивается больший вес по сравнению с более ранними). Я писал про расчет волатильности по методике JPMORGAN.

Модернизированный калькулятор позволяет просмотреть динамику всех указанных показателей с учетом скользящего окна.
Профессиональный инвестиционный калькулятор на Python

По пути пришлось порешать немало интересных программерских задач.Научится пользоваться Numpy, Pandas, Matplotlib, грузить данные из файлов и их обрабатывать, а также некоторыми другими функциями.

Сейчас есть задача сформировать свою базу данных, чтобы не выгружать их из текстовых файлов. Давно я к этому шел, и пришло время эту задачу порешать.

104 Комментария
  • 3Qu
    27 мая 2020, 15:36
    Так где сам то калькулятор?
      • 3Qu
        27 мая 2020, 15:49
        Алексей Бачеров, нет, не хочу. Но если не хотите делиться, то и писать не надо было. А может хотите продать? Или тоже нет?
        Когда я пишу о софте, у меня всегда ссылка на исходники. Иначе не вижу смысла об этом писать 
        • Антон Б
          27 мая 2020, 23:54
          3Qu, Это исследование.
          Отчет о профессиональном росте.
          Почему вызывает негатив отказ дать исходники?

          • 3Qu
            28 мая 2020, 00:15
            Антон Б, негатив? Мне без разницы. В чем цель поста? Картинки показать. Для чего? Это не исследование — у исследования должны быть результаты, иллюстрируемые картинками.
            Ну, сделал картинки, и молодец.
            • Антон Б
              28 мая 2020, 00:19
              3Qu, картинка и есть результат.
               а код это метод достижения результата.
              автор зарабатывает исследованием финансовым.
              и продает экспертизу, которая вложена в код.

              если он будет раздавать код то кто купит его экспертизу?

              Вашей квалификации хватает, чтобы прямо из стакана забирать деньги.
              но таких меньшинство.
              остальные вынуждены добывать хлеб в поте лица.
              не надо об этом забывать.
          • KEH
            28 мая 2020, 21:11
            Антон Б, 
            Это очередной обнулившийся клоун
            https://sbis.ru/contragents/7715954047/771501001

            Зашквареный ранее работой с МФО
            https://sbis.ru/contragents/7715961887/771501001
        • Gregori
          28 мая 2020, 14:30

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

          Если человек сделал и делиться -всегда плюс ставлю даже если продукт мне не нравиться. просто потому что человек делает хорошее дело (насколько хорошо он может делать-вопрос другой)

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

          • KEH
            28 мая 2020, 21:10
            Gregori, 
            Это очередной обнулившийся клоун
            https://sbis.ru/contragents/7715954047/771501001

            Зашквареный ранее работой с МФО
            https://sbis.ru/contragents/7715961887/771501001
      • Turbo Pascal
        27 мая 2020, 16:16
        Алексей Бачеров, ну зато бесплатно попонтовался. Это того стоило.
      • Алексей Бачеров, в чем польза поста?
      • Чёрный Трейдер
        27 мая 2020, 16:59

        Алексей Бачеров, видно, что вы начинающий программист, им свойственно переоценивать результат своего труда.

        Совет — вначале обязательно раздавайте свои программы бесплатно, так вы получите бесплатных тестеров и людей, которые будут вам бесплатно давать советы по улучшению своего продукта.

        После штук 10 таких проектов вы будете готовы продавать своё ПО за деньги.

      • Михаил Titov
        27 мая 2020, 17:32

        Подскажите пожалуйста, как сделать индикатор объема на графике, вот мой код: 

        import pandas as pd<br />import matplotlib.pyplot as plt<br />from matplotlib.ticker import (AutoMinorLocator)<br />from datetime import datetime<br /><br /><br />print("Введите ТИКЕР акции(например SBER)")<br />TICK = input()<br />print("Введите режим торгов для акций (TQBR), для etf (TQTF)")<br />board = input()<br />i=0<br /><br />#подготовка баз<br />trade=pd.DataFrame()<br />tradeBUY=pd.DataFrame()<br />tradeSELL=pd.DataFrame()<br />main = pd.read_excel("C:/PYEX/Database/{}.xlsx".format(board), sheet_name=0)<br />tr = pd.read_excel("C:/PYEX/Trade.xlsx", sheet_name=0)<br />for i in range(0, len(tr['Дата заключения'])):<br />    trade = trade.append({'INDEX':i}, ignore_index=True)<br />    tradeBUY = trade.append({'INDEX':i}, ignore_index=True)<br />    tradeSELL = trade.append({'INDEX': i}, ignore_index=True)<br /><br />#построение массива<br />j=0<br />for i in range(0,len(tr['Код финансового инструмента'])):<br />    if TICK == tr['Код финансового инструмента'][i]:<br />        if tr['Операция'][i] == 'Покупка':<br />            tradeBUY.loc[tradeBUY.INDEX == tradeBUY['INDEX'][j], TICK] = tr['Код финансового инструмента'][i]<br />            tradeBUY.loc[tradeBUY.INDEX == tradeBUY['INDEX'][j], 'TRADEDATE'] = int(datetime.toordinal(tr['Дата заключения'][i]))<br />            tradeBUY.loc[tradeBUY.INDEX == tradeBUY['INDEX'][j], 'PRICE'] = (tr['Цена'][i])<br />            tradeBUY.loc[tradeBUY.INDEX == tradeBUY['INDEX'][j], 'CV'] = tr['Количество'][i]<br />            tradeBUY.loc[tradeBUY.INDEX == tradeBUY['INDEX'][j], 'TYPE'] = tr['Операция'][i]<br />            tradeBUY.loc[tradeBUY.INDEX == tradeBUY['INDEX'][j], 'VOLUME'] = tr['Операция'][i] * tr['Количество'][i]<br />            j = j + 1<br />        else:<br />            tradeSELL.loc[tradeSELL.INDEX == tradeSELL['INDEX'][j], TICK] = tr['Код финансового инструмента'][i]<br />            tradeSELL.loc[tradeSELL.INDEX == tradeSELL['INDEX'][j], 'TRADEDATE'] = datetime.toordinal(tr['Дата заключения'][i])<br />            tradeSELL.loc[tradeSELL.INDEX == tradeSELL['INDEX'][j], 'PRICE'] = tr['Цена'][i]<br />            tradeSELL.loc[tradeSELL.INDEX == tradeSELL['INDEX'][j], 'CV'] = tr['Количество'][i]<br />            tradeSELL.loc[tradeSELL.INDEX == tradeSELL['INDEX'][j], 'TYPE'] = tr['Операция'][i]<br />            tradeSELL.loc[tradeSELL.INDEX == tradeSELL['INDEX'][j], 'VOLUME'] = tr['Операция'][i] * tr['Количество'][i]<br />            j=j+1<br /><br />#Дата из цифрового формата в нормальный<br />for i in range(0, len(main['TRADEDATE'])):<br />    main.loc[main.TRADEDATE == main['TRADEDATE'][i], 'TRADEDATE'] = datetime.fromordinal(main['TRADEDATE'][i])<br /><br />#построение графика<br />x1 = main['TRADEDATE']<br />y1 = main[TICK]<br />x2 = tradeBUY['TRADEDATE']<br />y2 = tradeBUY['PRICE']<br />x3 = tradeSELL['TRADEDATE']<br />y3 = tradeSELL['PRICE']<br />fig, ax = plt.subplots(figsize=(5, 1))<br />tradeBUY.apply(lambda x: ax.annotate(x['CV'],xy = (x['TRADEDATE'], x['PRICE']), color='green', fontsize=11,arrowprops=(dict(color='green'))), axis=1)<br />tradeSELL.apply(lambda x: ax.annotate(x['CV'], (x['TRADEDATE'], x['PRICE']), color='red', fontsize=11,arrowprops=(dict(color='red',headlength = - 10 ))), axis=1)<br />ax.plot(x1, y1)<br />ax.xaxis.set_minor_locator(AutoMinorLocator())<br />ax.yaxis.set_minor_locator(AutoMinorLocator())<br />ax.tick_params(which='major', length=10, width=2)<br />ax.tick_params(which='minor', length=5, width=1)<br />ax.set_xlabel('ДАТА')<br />ax.set_ylabel('ЦЕНА')<br />ax.set_title(TICK)<br />plt.grid()<br />plt.show()

        получить хочу типо такого индикатора объема, как под графиком:



          • Михаил Titov
            27 мая 2020, 20:23
            Алексей Бачеров, а я как раз решил запариться, и сделал 

      • Михаил
        27 мая 2020, 17:45
        Алексей Бачеров, Numpy, Pandas, Matplotlib с вами бесплатно поделились, а пара десятков строк кода по верх них нужно конечно продавать. 
          • Михаил
            27 мая 2020, 18:13
            Алексей Бачеров, написал и не раз. Спасибо квант фонду AQR Capital Management, который поделился со мной pandas — теперь легко писать подобные штуки буквально в несколько строк. И кстати библиотечку, которую вам ниже подсказали, для скачки котировок я написал.
              • Михаил
                27 мая 2020, 18:31
                Алексей Бачеров, вы воспользовались известными библиотеками и посчитали известные показатели — не понятна цель поста. Было бы какое-то ноу-хау еще можно было бы понять вас. Подвесили бы код, хоть какая-то польза была — новички бы у вас посмотрели и чего-то изучили полезное, более продвинутые подсказали, что вы делаете не так.
        • Ынвестор
          27 мая 2020, 18:48
          Михаил, расскажите это RedHat или Mongo
          • Ëжик
            27 мая 2020, 19:26
            Ынвестор, плохой пример. У первых есть Fedora и куча комита в ядро и свободные драйвера, вторые вообще AGPL были и не далеко от этого ушли.
          • Михаил
            27 мая 2020, 19:28
            Ынвестор, MongoDB сам использую — она бесплатная, как ODM к ней,  драйвер для Питона и Compass для просмотра базы. RedHat в первую очередь берет за поддержку, а так кучу бесплатных дистрибутивов Linux на любой вкус доступно. В любом случае, эти две программы не в 20 строк по известным алгоритмам. 
            • Ынвестор
              27 мая 2020, 19:38
              Михаил, тикер MDB. Реально если разговор о 20-ти строках ну пусть народ сам и напишет. Например описание нейросетки на keras  еще короче.  Или вот писал прайсинг опционов по Монте-Карло. Реально тоже строк 20-30 не больше. Но это надо сначала сообразить как писать. Опять же обменяться опытом и знаниями с интересными и копающими людьми — это гуд. А когда требует неизвестно кто. С какой стати?
              • Михаил
                27 мая 2020, 19:53
                Ынвестор, а с какой стати нет?  Если для написания этих 20-30 срок нужно прикладывать усилия, то явно есть чему поучиться. Поэтому лучше выложить, авось, кто чего полезное подскажет. Чего тут скрывать, мне совершенно не понятно. Никакого ноу-хау тут нет. Вон человек выложил код https://smart-lab.ru/blog/617429.php я ему пояснил, что не так и пулреквест добавил. Так гораздо практичнее. Я понимаю, когда люди реально какие-то не тривиальные вещи делают и код скрывают.
                • Ынвестор
                  27 мая 2020, 20:16
                  Михаил, ну вот чего-то под свои задачи не нашел опен сорса. Видимо не совсем тривиально. Если честно, я а… ваю. Выкладывание сорсов — это исключительно добрая воля автора. Какого хера от него это ТРЕБОВАТЬ? 
                  • Михаил
                    27 мая 2020, 20:25
                    Ынвестор, и я под свои задачи не нашел решения — дело не в нетривиальности, а просто запросы у большинство очень специфичные, можно сказать личные. Я вроде не требовал раскрытия. На мой взгляд, скрывать достаточно странно — гораздо больше шансов получить полезный фитбек, когда исходники видны. 
          • Михаил
            27 мая 2020, 19:37
            • Ынвестор
              27 мая 2020, 19:40
              Михаил, в другом топике ответил. MDB. Все монетизируется. Поэтому фри продукты так и пишутся что в продакшн их хрен в таком виде засунешь.  Глюк на глюке.
              • Михаил
                27 мая 2020, 20:00
                Ынвестор, послушайте Radio-T там Umputun регулярно раскатывает, как отлично MongoDB работает под серьезной нагрузкой — он анализирует все сделки на бирже в США на фрод для регулирующих органов и запускает ее сам. Естественно есть платный сервис от самой Mongo с работающими инстансами, для тех кому это нужно.
                • Ынвестор
                  27 мая 2020, 20:19
                  Михаил, вот такое применение идеально. Если чего навернется то ничего страшного в принципе не случится. Не знаю как сейчас а в ранних версиях это чудо не писало нормально логирование на диск. И вполне реально можно было получить неконсистентность базы. Если у вас там реальные данные а не мониторинг фрода до вам пипец.
                  • Михаил
                    27 мая 2020, 20:29
                    Ынвестор, конечно ничего страшного не случится, только в SEC к тебе быстро прискачет и отмазки про база упала его мало волнуют, а потом регрессионные иски от клиентов прийдут.
                    • Ынвестор
                      27 мая 2020, 20:38
                      Михаил, я уверен что вы не знаете всей кухни.  В банке если грохнется мониторинг фрода то вы об этом даже не узнаете. Сравните если грохнется база АБС. Или интернет банка. В любом случае мы совсем удалились от темы. Я вам показал, что на бесплатных продуктах со своими 20-30 тысячами кода компании становятся мультимиллиардными. Зачем спорить с очевидным? Если вам интересна тематика — просто напишите автору в личку. Я почти не сомневаюсь что с опытным программистом он поделится кодами (это было бы логично). 
                      • Михаил
                        27 мая 2020, 21:09
                        Ынвестор, кухня вполне прозрачно раскрыта — серьезные клиенты, серьезные регуляторные требования и проверки + SEC с уголовными делами. Возможно, когда-то у Mongo были проблемы, но уже давно это зрелое решение для продакшена, которое может переваривать большие объемы данных. Благодаря чему MongoDB стала самой распространенная документной базой. Запись на диск и журналирование регулирует с помощью write concern. Настройки по умолчанию не всех устраивают, но они описаны в документации. Исходники доступны, компания пытается жить за счет сервиса + платежи с субсервиса (облачные компании предоставляющие инстансы с MongoDB должны платить Mongo).

                        Тема расчета беты с помощью Pandas не сильно интересует, чтобы писать об этом в личку. Если бы код был виден без лишних движений, я бы глянул и может чего подсказал, как в посте выше. Но автор прозрачно написал, что для него это просто пиар ничего полезного получить или дать читателю он не хочет. 
                          • Михаил
                            27 мая 2020, 21:49
                            Алексей Бачеров, ну у меня тут тоже в личке беседа потенциально полезная завязалась. Я выше написал, что расчёт беты с помощью pandas мне не сильно интересен, но если бы код был, то мне не сложно прокомментировать или добавить пулреквест. И мне несколько забавно, когда такого уровня код скрывают и дают доступ через личку. 
                              • Михаил
                                27 мая 2020, 22:04
                                Алексей Бачеров, это случайно получилось. Я действительно считаю, что от раскрытия кода больше пользы, и только реальное ноу-хау имеет смысл скрывать, да и то не факт. 
            • Антон Б
              27 мая 2020, 23:37
              Михаил, Вот вы работали раньше на работе?
              а почему бесплатно не отдаете результаты своего труда хозяину бизнеса?
              требуете зарплату?

              Может и сейчас работаете?

              Отдавать результаты своего труда за так это нужно достичь определенного уровня маслоу.
              Проехали с утра на тесле до пляжа. (можно не до личного)
              Искупались.
              Пока не жарко.
              Посмотрели что вам никогда не придется работать за деньги.

              И выложили часть своего труда бесплатно.


              Все находятся на разных уровнях маслоу.
              А в рф половина взрослых(>18 лет) людей обладает собсвенностью на $2700 или меньше.
              (сильно б/у отечественный авто максимум)
              Буквально они нищие.
        • Антон Б
          27 мая 2020, 23:57
          Михаил,
          1) строка текста может стоить миллиард долларов.
           с закрытым ключом к кошельку накамото от битка.

          2) за строку формул получают нобелевки
          тот-же e=mc2

          3) это может быть просто демонстрация квалификации для своего работодателя, текущего или будущего.
          даже если ничего инновационного, с точки зрения науки нет.
          (дипломная работа)
      • Антон Б
        27 мая 2020, 23:53
        Алексей Бачеров,
        Правильно.
        Это Ваш труд, и ваша квалификация.
        Если вы будете отдавать свой труд за так, то ваш работодатель подумает что слишком много вам платит.
        • Михаил
          28 мая 2020, 07:59
          Антон Б, некоторые строчки кода может и стоят много и являются активом, но не расчет беты с помощью Pandas. Гораздо чаще хорошим ативом является открытый код на GitHub, который прозрачно показывает, что реально человек умеет.  
  • Врач-бондиатОр
    27 мая 2020, 15:47
    Python -штука увлекательная. Каким интерпретатором пользуетесь и получается ли грузить котировки с финама? 
      • Михаил Titov
        27 мая 2020, 17:34

        Алексей Бачеров, вот код качает сразу с мос биржи.

        import requests<br />import apimoex<br />import pandas as pd<br />import pathlib<br />from datetime import datetime, date<br /><br />board = 'TQTF'<br /><br />#Открываем файл с тикерами<br />with open("C:/PYEX/TICK.txt", "r") as TICKs:<br />    TICKs = [line.rstrip() for line in TICKs]<br /><br />#Дату лучше не менять иначе ошибка в последнем цикле<br />DATE = date(2013, 1, 1)<br />i=0<br /><br />#Создание основного фрейма и заполнение первой колонки сквозной датой<br />maindate = pd.DataFrame()<br />datei = datetime.toordinal(DATE)<br />for datei in range(datetime.toordinal(DATE), datetime.toordinal(datetime.now())):<br />    maindate = maindate.append({'TRADEDATE':datei}, ignore_index=True)<br /><br />#Скачивание котировок и заполнение фрейма<br />process = 0<br />for TICK in TICKs:<br />    process = process + 1<br />    print((process / len(TICKs))*100,' %') #Прогресс выполнения<br />    data = apimoex.get_board_history(requests.Session(), TICK, board=board) #Получение данных с биржи<br />    if data == []: #Пропуск если по данному тикеру нет данных<br />        continue<br />    df = pd.DataFrame(data) #Перенос данных с биржи во фрейм<br />    maindate[TICK] = None #На всякий случай предварительно создаем столбик тикера и заполняем пустыми значениями<br />    j=0<br />    for i in range(0,datetime.toordinal(datetime.now())-datetime.toordinal(DATE)): #Пробег по датам основного фрейма<br />        if maindate['TRADEDATE'][i] == datetime.toordinal(datetime.strptime(df['TRADEDATE'][j], '%Y-%m-%d')): #Если дата основного фрейма и базы с биржи совпадают, то в столбик тикера записывается цена закрытия<br />            maindate.loc[maindate.TRADEDATE == maindate['TRADEDATE'][i], TICK] = df['CLOSE'][j] #Собственно запись цены закрытия в строчку совпадения столбик тикера<br />            j=j+1<br />            if j == (len(df.index)-1): #чтобы не выходить за размер данных с биржи в случае если инструмент до наших дней не дожил<br />                break<br /><br /><br />#запись базы в эксель<br />pathlib.Path("C:/PYEX/Database").mkdir(parents=True, exist_ok=True)<br />maindate.to_excel("C:/PYEX/Database/{}.xlsx".format(board), index=False)
  • eagledwarf
    27 мая 2020, 16:09
    прочел: «доходность активов и функция Бога» — пора завязывать с игрушками :))
  • d_d
    27 мая 2020, 16:11
    что такое функция Богла?
  • Ëжик
    27 мая 2020, 16:16
    Исходников нет, смотреть нечего. Минус поставить тоже нельзя. Скука. 
  • d3vSDK
    27 мая 2020, 17:15
    Забавно. А я, пока учу питон на самоизоляции, написал скрипт, который наполняет sql базу полной историей цены опциона по конкретному активу, а так же в момент времени даёт срез цен по всем датам экспирации по нужному страйку. А то не охота по доске опционов самостоятельно искать, что дешевле купить.
    • Ынвестор
      27 мая 2020, 17:21
      d3vSDK, а история откуда?
      • d3vSDK
        27 мая 2020, 17:44
        Ынвестор, агрегирует доски опционов с сайта мосбиржи. Брокер договором запрещает брать эти данные из квика.
        • Ынвестор
          27 мая 2020, 18:50
          d3vSDK, у мосбиржи есть история по опционам? На Америке это очень больших бабок стоит
          • d3vSDK
            27 мая 2020, 18:59
            Ынвестор, нет, в том то и дело. Вернее, там есть что-то с похожим названием, но чтобы это скачать, нужен пароль. Причём, не тот, с которым логинишься на сайт мосбиржи.
            Поэтому я сделал сервер, который работает в облаке и без моего участия наполняет базу историей цен.
            • Ынвестор
              27 мая 2020, 19:01
              d3vSDK, я ничего не понимаю. Откуда брать историю? Или ежедневную закачку вы называете историей?
              • d3vSDK
                27 мая 2020, 19:07
                Ынвестор, да, верно, так будет точнее. Сохранение цен с шагом в 30 минут.
                • Ынвестор
                  27 мая 2020, 19:10
                  d3vSDK, ок теперь понял. Да, это гимор.
                  • d3vSDK
                    27 мая 2020, 19:12
                    Ынвестор, 👍
  • Ынвестор
    27 мая 2020, 17:20
    Правильной дорогой идете. Халявщикам ваши исходники без надобности. А кто свое чего то пилит, то с тем можно и поделиться опытом. При взаимном интересе.
      • Ынвестор
        27 мая 2020, 18:51
        Алексей Бачеров, постил тут тулзу для отчетов в налоговую. В итоге мало кому это вообще здесь надо оказалось, зато тоже умники нарисовались — код выкладывай. 
      • пишут: «то и писать не надо было» только на форумах русских

        невдомёк недальновидным: для начала нормально
        дабы застолбить свой приоритет

        зато токсичные не пишут что сделают увидев код
        и предвижу: видя код никто ничего не сделает

        лично мне код питон НЕнужен
        я лучше реализую в эксцель excel
          • предпочитаю эксцель ведь любой график
            в эксцель легко добавить за минуту

            моя тема с ютюбом в избранном у 60 здешних:

            Учу EXCEL за 6 минут
              • Изучая язык создали бы тему этюдов
                программ и у меня есть темы:

                Учим C# Windows Forms зная Basic
                Учим C# зная basic


                а я пока посмотрю список 20+ программистов
                плюсанувших комментарий в начале

                 

        • KEH
          28 мая 2020, 21:04
          Логарифм Интегралыч, 
          Это очередной обнулившийся клоун
          https://sbis.ru/contragents/7715954047/771501001

          Зашквареный ранее работой с МФО
          https://sbis.ru/contragents/7715961887/771501001
  • Goreloff
    27 мая 2020, 17:37
    Такое ощущение, что распечатка на матричном принтере, ничего не видно

  • “Я сделяль” – мем с зеленым существом, которое с грустным лицом держит круглые предметы и говорит, что “сделяль” их. Часть комикса про желчный пузырь, который “сделал” камни и хвастается этим. Используется, чтобы показать, что человек сделал что-то бесполезное.
    © https://memepedia.ru/ya-sdelyal/
    • Антон Б
      27 мая 2020, 23:49
      Дмитрий Овчинников, 
      это вполне себе квалифицированный труд экономического анализа.
      пример его сайт ib.ab-trust.ru/

      Автор скорее всего риск-менеджер в банке или фонде.

  • ves2010
    27 мая 2020, 21:44
    дочегож примитивная задача

    приведенная цена закрытия=приведенная цена закрытия + (close-close[i-1])/close

    т.е цену сводим к относительным приращениям
    затем считаем по активам и сравниваем
  • KEH
    28 мая 2020, 20:50
    Это очередной обнулившийся клоун
    https://sbis.ru/contragents/7715954047/771501001

    Зашквареный ранее работой с МФО
    https://sbis.ru/contragents/7715961887/771501001

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн