1. Турнир по мафии
    Приз - чья-то жопа и возможно квартира)
    Пилимся
    Скрыть объявление

Блог Немного об инвестициях.

Тема в разделе "Блоги", создана пользователем Сталин, 12 Апрель 2023.

  1. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    В этой теме автор и его собеседники не дают никаких инвестиционных рекомендаций.
    Тут описываются только предположения, которые порой не сбываются.
    Каждый человек несет личную отвественность за свои инвестиции.

     
    • Красава! Красава! x 2
    • Я в теме, бро. Я в теме, бро. x 1
    Последнее редактирование: 26 Февраль 2024 в 09:45
  2. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    .
     
    Последнее редактирование: 6 Май 2026 в 08:52
  3. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Жалею, что не завершил процедуру получения квала (путем оборота 6 млн + ежемесячная активность). Чота забил под конец. Вернее отвлекся, и пропустил активность в одном месяце. Думаю, может заново заняться)
    Вроде условия не поменялись.
     
    • Красава! Красава! x 1
    Последнее редактирование: 6 Май 2026 в 08:45
  4. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Не было изменений.
    Как было 2 варианта, так и остаётся.
    1. Напрямую открыть брокерский счёт за бугром. Типа IB (интерактив брокерс) и и.т.п.
    Там нет градаций квал или нет)
    Но ввод вывод денег как сейчас дела обстоят с этим. Есть свои риски.
    Налоговую нужно уведомить, самостоятельно отчитываться полностью все типы отчетов.
    2. Получить статус квала у нужного брокера, который откроет доступ к мировым рынкам.
    Отчитываться тут не нужно. Брокеры сами отчитываются, даже по иностранным активам. (Это вот 1 или 2 года как. Ранее и за дивиденды делал отчёт, теперь брокер сам это делает)
    Там только один лёгкий отчёт нужно самостоятельно делать - о движении денежных средств (это если сегрегированный счёт)
    Но есть возможность и без сегрегированного счета брать иностранные бумаги.
    На такого брокера я тебе давал подсказку в ЛС)
    Изменения произошли только, что расширили число бирж к которому имеют доступ квалы.
    Кроме Америки, японскую добавили пару месяцев назад, ранее были добавлены 2 или 3 китайский биржи и гонконгская .
    .

    Вот список доступных бирж:

    · Шанхай (SSE) и Шэньчжэнь (SZSE): Материковый Китай, расчеты в юанях (режим T+1). Доступно более 370 инструментов (акции, ETF) .
    · Гонконг (HKEX): Доступ возобновлен, расчеты в гонконгских долларах (режим T+2). Торги теми же 370+ инструментами .
    · Токио (TSE): Акции Японии, расчеты в иенах (режим T+2). В портфеле доступно 120 бумаг .
     
    • Красава! Красава! x 1
    Последнее редактирование: 6 Май 2026 в 10:39
  5. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Да, жалко пропустить месяц. Напоминалку себе в календарике телефона сделай на какое-то число, чтобы тебе напоминание приходило.

    Да, есть смысл получить квала. Тем более это не так трудозатратно. Самое сложное не пропустить месяц))
    Не поменялись по обороту, пока 6 млн, да. Поменялось другое условие.
    Брокерский счет открой именно там, где я тебе писал. Все преймущества квала раскрываются только там)
     
    • Красава! Красава! x 1
  6. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Скоро ЧМ 2026 по футболу
    rassain , ты как там?:fish-drink:
     
    • Я в теме, бро. Я в теме, бро. x 1
  7. Поролоний

    Поролоний Женские цвета

    В Семье с:
    10 Август 2015
    Сообщения:
    10.152
    Лайков получено:
    297
    Рейтинги:
    +1.723
  8. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Придется программку писать :peka_book:
     
    • :D :D x 1
  9. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Только только на новом месте обживаюсь) Не до программ и т.д)
    Только только сообщил об измнении реквезитов управляющие компании и свой банк)

    Посмотрел новости)

    Совет директоров компании Nvidia объявил о беспрецедентном повышении квартальных дивидендных выплат.
    Новый размер выплаты: Квартальные дивиденды выросли с $0,01 до $0,25 на одну акцию.Масштаб: Увеличение составило 25 раз

    Дивидендов вообще не было (0,01 это 0)) А сейчас хоть что-то
    Кроме того, одновременно с повышением дивидендов совет директоров одобрил масштабную программу обратного выкупа акций (buyback) на сумму $80 млрд

    Деньги видимо уже некуда девать ,что в 25 раз подняли дивиденды и теперь будут раз в год поднимать дивиденды скорее всего ,как делают все компании.

    Еще SpaceX выходит на биржу.
     
    • Красава! Красава! x 1
    Последнее редактирование: 2 Июнь 2026 в 13:50
  10. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    С новосельем! :beer:
     
    • Красава! Красава! x 1
  11. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Хм, неплохо!)
     
  12. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Сначала подумал, что у меня в глазах рябит и я что-то не то вижу. Проверил, все правда)
    Потихоньку компании роста начинают платить дивиденды)
     
    • Красава! Красава! x 1
  13. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Вот когда такое происходит, обычно же рост замедляется? Ну типа то что пустили на дивы, могли в развитие бизнеса?
    Хотя чо там еще развивать :D
     
  14. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    По логике да.
    Приоритет обычно отдается развитию. Если есть куда вкладывать, чтобы занять большую доля рынка, в R&D вкладывать, скупать стартапы смежные, запатентовать все свои разработки, сделать так ,чтобы конкуренты не смогли повторить успех слишком просто))
    Обратный выкуп акций тоже норм. Дивиденды только без выплат. Компания сама убирает с рынка частьсвоих акций.
    И по идее уже в зрелом возрасте начинаются дивиденды. Когда уже все, денег некуда вкладывать.
    Тут уже скорее всего так разожрались, :Dчто пошли и увеличивать резко дивиденды.
     
    • :D :D x 1
    Последнее редактирование: 2 Июнь 2026 в 14:24
  15. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Не в тему, но я сегодня у себя на 5 метрах за все года впервые пионы дали бутон :crazy: 4 года назад из питомника высадил пионы. 4 года ходил, не было бутонов. И вот первый бутон. Скоро красиво будет)
     
    • Красава! Красава! x 1
  16. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    [​IMG]
     
    Последнее редактирование: 3 Июнь 2026 в 13:58
  17. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    :atata:
     
    Последнее редактирование: 3 Июнь 2026 в 14:00
  18. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Появилось небольшая сумма свободных денег, которые готов надолго пристроить.
    У меня в голове три желания, а днег не так много, надо выбрать что-то одно)

    Авер , как бы ты решеил и сделал свой выбор, если у тебя пороцентов 85% сидит в тройке акций NVDA+GOOGL+MSFT
    Процентов 7 - 8 сидит в фондах ETF: SCHG + USD
    И процентов 7-8 в российском рынке (дальние ОФЗ + Сбер+ КЦ ИКС 5)

    Мои варианты такие:
    1. Докупить сейчас еще дальних ОФЗ - 15% годовых сейчас примерно на 10 + лет дадут стабильно + реинвестирование)
    2. Докупить SCHG тоже придаст дополнительной стабильности, но без реинвестирования, но в $ (порядка 16% в год данная ETF дорожает)
    Дивиденды в этой ETF есть, но они 0,032$, считаем, что их нет. То есть только 16% прирост в долларах можем ожидать (тут высокая диверсификация по топ компаниям) Взрывного скачка не будет, но надежность тут максимальная.
    3. Докупить USD - еще бы добавил агрессии в портфель? 2 кратный левередж фонд - можно ожидать до 37- 40% годовых за счет опционов по полупроводниковому сектору. (в случае падения сектора полупроводников - падать будет в 2 раза сильнее - плечо на опционах работает в обе стороны)

    Как бы ты сделал выбор?
     
    Последнее редактирование: 3 Июнь 2026 в 15:16
  19. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    А сколько свободных средств в % от портфеля? Может имеет смысл размазать по всем пунктам? Вроде все 3 пункта норм. Но учитываю неопределенность по Тайваню, в 3-м пункте как-будто риска многовато сейчас. Ну это в моменте, на долгосрок наверно норм. Мне вообще наверно ОФЗ с фиксом на 10 лет с реинвестированием чуть больше нравится.
    Но вообще я не сильно же шарю. Не ИИР ))
     
  20. Cryless

    Cryless Мирный житель

    В Семье с:
    21 Август 2018
    Сообщения:
    10.594
    Лайков получено:
    382
    Рейтинги:
    +1.306
    Процент хороший сам подкупил. Но страшно немного за рубль. И возможно даже этот процент не отобьет все падение.

    Это в России можно купить?

    Тут не понял про USD

    В физических ликвидных активах есть деньги?
     
  21. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    У меня портфель большой,
    в процентах пополнение ,которое я готов сделать, ну 1,5% ))
    Свободых дненг у меня без пополнений нет, все пристроено, в рынке полностью сижу.
    По чуть чуть по 0,5% накинуть. Если не найду причину выбора, то наверное так стоит сделать))

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


    USD это тикер)) Не доллар. Просто совпдает с названием доллара, среди бумаг есть такое чудо:

    Тикер:USD
    Полное название: ProShares Ultra Semiconductors 2X Shares



    Вот график это etf:

    [​IMG]
     
    Последнее редактирование: 3 Июнь 2026 в 16:06
  22. Бонни

    Бонни Saya

    В Семье с:
    19 Октябрь 2014
    Сообщения:
    18.301
    Лайков получено:
    932
    Рейтинги:
    +6.448
    поехать в отпуск)
     
    • Я в теме, бро. Я в теме, бро. x 1
  23. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Если на график USD глянуть, там внизу, где объемы, видно что и дивиденды капают, совсем крошечные (синие кружки с буквой "D", и фонд сплиты делает, дробит свои паи, когда чрезмерно вырастет, оранжевые кружки с буквой "S" - очень хорошая ETF) но опасная .Движения все удвоенные)
     
  24. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Попугая куда пристроить, новый дом, знакомых пока ноль)
    Да и морально выгорел с переездом этим) И ЧМ по футболу хочу посмотреть)
     
    • Флирт Флирт x 1
  25. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    del
     
    Последнее редактирование: 3 Июнь 2026 в 16:19
  26. Cryless

    Cryless Мирный житель

    В Семье с:
    21 Август 2018
    Сообщения:
    10.594
    Лайков получено:
    382
    Рейтинги:
    +1.306
    Ага. Ну вообщем если куча денег уже работает но нет физических активов, то я бы подумал именно о них.
    Если не думать о физических активах, то ОФЗ не брал бы наверное.
    Че-то ощущение нависшей денежной массы на вкладах - не дает покоя + рубль неестетственно крепкий.
    Считай инфляция уже почти в два раза сработала с 22, а курс около 70 держится.
     
  27. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    USD ETF тоже на историческом максимуме находится:) Но на долгосрок, думаю да, она принесет болше, чем остальные 2 варианта.
    Но меня и риск беспокоит. У меня итак агрессивный портфель 85% сконцентрировано в 3 бумагах. Такого нет в учебниках по диверсификации ))
    По логике мне необъодимо стабильности добавить, то есть SCHG подкупить еще. Это классическое решение, которое мне посоветуют скорее всего управляющие портфелями) Объяснив, что итак рисков набрал уже)
     
    Последнее редактирование: 3 Июнь 2026 в 16:42
  28. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Кстати, хотел немного расспросить про эту механику, как это происходит.
    Инфляция подлетит, когда вклады схлопываться начнут? Типа масса денежная в свободном обращении появляется? Но мне кажется при снижении ключа, идет побег из вкладов именно в ОФЗ и в корпораты, затем в акции. Ну то есть перелив средств идет. Как бы по идее и на инфляцию тогда раздутый пузырь вкладов не должен влиять глобально?
    Или я чот не так понимаю?
     
  29. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Cryless ,ты какие выпуски ОФЗ собираешь?

    Я пользуюсь https://smart-lab.ru/q/ofz/
    там в фильтрах ставлю 10+ лет
    и выбираю только с постоянным доходом ОФЗ.
    Среди оставшегося подбираю себе по дюрации и доходности.

    У меня сейчас 26238, 26247, 26230, 26243, 26253, 26250
    Других нет.

    У тебя какие выпуске есть?)
     
  30. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Вопрос не мне конечно) но у меня такие:
    26238, 26243, 26244, 26246, 26248, 26249, 26250, 26252, 26253, 26254
     
    • Красава! Красава! x 1
  31. Cryless

    Cryless Мирный житель

    В Семье с:
    21 Август 2018
    Сообщения:
    10.594
    Лайков получено:
    382
    Рейтинги:
    +1.306
    26248

    И еще я Казахстанские брал Казахст11 и Казахст13 (на 5 лет) летом 25 брал, у них тело совсем низкое было. Сейчас +10 они уже сделали.
    А ОФЗ в тот же момент брал - там же осталось тело.
     
    • Красава! Красава! x 1
  32. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Инфляция завист не только от ключа, это более многофакторная история.
    Включают печатный станок и вуаля.

    Демография косвенно может повлиять
    Санкции тоже.
    Монополизация рыка и тенденции в этом направлении.
    Налоговая политика и бюджет страны
    Рост издережек производства
    Курс нац. валюты
    и др.
    Т.е. по итогу нет жесткой корреляции между ставкой ЦБ и инфляцией.
    ЦБ ставкой уже пытается повлиять на случившуюся ситуацию. Ослабить петлю, или сильнее душить)
     
    • Красава! Красава! x 1
    Последнее редактирование: 3 Июнь 2026 в 17:09
  33. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    247 и 248 братья близнецы)
    Там разница только в + 1 год погашения. Одна раньше на год истекает, другая дольше на год. Все остальные параметры совпадают.
    Выбрал 247, так как мне дата экспирации больше подходит :)
    253 И 254 тоже вроде бы близнецы с такой же разницей)
     
  34. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Купил себе новый комп :yahoo: В новую квартиру)
    В разы мощнее) Страы морально устарел, лет 10 не менял:crazy:
    Установил себе claude от antropic
    Очень хвалят эту модель ИИ от Антропик. В программировании особенно сильна.
    Скормил я ей свой старый сайт. И на основе моего старого сайта сделала очень интересный дизайн и превратила в дуэль.
    Сам метод (не абсолютных ,а относительных цифр) уже несколько лет практикую. В сети найти относительное сравнение сразу по нескольким характеристикам - редкость. В основном можно посмотреть абсолютные числовые знаечения.

    Сравнить один параметр у кого больше у кого меньше легко. Посмотрел цифры и сравнил сам. Сложности начинаются, когда один фундаментаьный показатель у одной компании лучше, другой показатель у другой. И ту уже вывод сложнее сделать. А если это не 2, а 4 показателя или больше?:ara:

    Перед прогой для игры диксит я уже делал себе прогу (обычная прога на комп (как диксит сделал)
    Она имеет вот такой вид:
    [​IMG]
    Тут 6 параметров для сравнения и на 3 языках. Но есть графическое отображение. Примитивное, но есть)

    И крч, на основе этой моей работа ИИ предложил такую идею. Дуэли в красивом дизайне.
    Тут уже не 6, а 8 фундаментальных параметров. И уже не 3, а на 8 языков. И сделано этот сервис общедоступно. На сайте))
    [​IMG]
    [​IMG]
    [​IMG]

    Есть бесплатный тариф (5 дуэлей в день) И про тариф. Сделал его максимально дешевым, чтобы меньше думали и чаще переходили) 1,5 usdt
    В про добавлется регулировка весов каждого параметра, можно выкрутить любой параметр из 8 в пределах от 0 до 30% веса.
    Безлимитные дуэли
    и развернутый pdf отчет. Со свдокой, с формулами расчета, с сырыми данными, который были взяти с sec, с датами отчетов, с пометакми типа Y или Q

    Все уже работает, но пока pro нельзя активировать. trybit.com сервис рассмартивает заявку с тестового на нормальный режим. Тестировал платежи в песочнице. Скоро одобрят и все заработает))

    [​IMG]
    [​IMG]
    [​IMG]
    _ _ _
    Тут удалось реализовать динамическое генерацию страниц на сервере.
    когда пользователь заходит по адресу типа https://duelstocks.com/duel/aapl-vs-msft, сервер сам подставляет в мета-теги (title, description) названия тикеров. Поисковик видит готовую страницу с уникальным заголовком «DUEL: AAPL vs MSFT — Stock Battle» и описанием. То есть каждая дуэль — это отдельная страница для поиска.

    • Каждая дуэль имеет свой уникальный URL (/duel/ticker1-vs-ticker2).

    • Мета-теги меняются для каждой страницы автоматически.

    • Sitemap обновляется сам, без ручного вмешательства.

    • Robots.txt настроен так, чтобы поисковики приходили на sitemap.
      Теперь поисковики (Google, Яндекс и др.) могут проиндексировать все дуэли как отдельные страницы, и они будут показываться в выдаче по запросам типа «сравнить AAPL и MSFT». Это даёт органический трафик без рекламы и без ручного создания сотен страниц.
    • Всё работает автоматически, и нам остаётся только добавлять новые дуэли (они появляются сами, когда пользователи их создают)

    Старый сайт был статичный. Создал 5 страниц на русском и 5 перевел на англ и все (само ничего не появлется))). Не буду его поддеживать. И визуально он старый 2010 годов +- был.

    Кому интересно новый сайт:
    https://duelstocks.com/

    А, да. Пдф только на английском языке.
    И поскольку источником сырых данных является SEC, то этот сервис только для американского рынка акций.
    Есть страница FAQ
     
    • Красава! Красава! x 1
    Последнее редактирование: 21 Июнь 2026 в 17:18
  35. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Ух ты, круто)
     
    • Флирт Флирт x 1
  36. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Она платная?
     
  37. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Кстати, при желании можно реализовать перевод той же ИИ. Думаю, она легко справится с этой задачей:
    Распознавания текста с сохранением формата (шрифт, размер, цвет и т. д.)... Перевод... Упаковка переведённого текста обратно в ПДФ в изначальном формате текста.
     
    • Согласен Согласен x 1
  38. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Они выкатили бесплатную версию. Но она имеет ограничение по запросам. Превышаешь лимит - ждешь 5 часов, далее новый вопрос.
    И если мало купить платную версию ,там другие лимиты)

    Но что интересно, она уже как софт ставится на комп.
    И это первая ии (или это я впервые столкнулся), которая не только код пишет, но она сами файлы может выдать. Готовые файлы. т.е. дать готовый софт.

    Выглядит это так:
    [​IMG]
     
    • Красава! Красава! x 1
    Последнее редактирование: 21 Июнь 2026 в 17:04
  39. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Да там переводить-то особо нечего)) Не стал с переводом pdf насиловать ии)). Думаю там предельно все понятно.
     
  40. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Это действительно плюс, особенно для тех, кто программированием не занимается совсем. Не нужно возиться с установкой среды разработки. Все для людей стало быть)
     
    • Согласен Согласен x 1
  41. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Сначала получил отказ) Причину отказа написали, что мало инфы.
    Пришлось добавлять страницы:
    Политика конфиденциальности
    Условия использования
    Политика возврата
    После этого одобрили))
    подписка про заработала)

    Сегодня составлю палан продвижения.
    В X (twitter) и Reddit буду посты писать с разбором дуэлей со своего сайта)

    Так-то врдое все очень нравится. Сделал себе секретный ключ для обхода подписки про, чтобы я сам себе не платил за про подписку:D
    Хз, как это пойдет или нет. ИИ очень позитивно оценивают идею, код пишет, что очень достойно написан, что SEO потенциал очень хороший.
    И дизайн заходит с темной темой. И цена вроде демпинговая.
    ХЗ не имел ранее такого опыта. Вообще. Буду пробовать)




    Для старта идеально, да.
    Я не программист, но капельку понимаю, могу залезть в код и что-то там исправить, понять, что там странность какая-то и уточнить. Ну базовые совсем знания)
     
    Последнее редактирование: 23 Июнь 2026 в 13:40
  42. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Но спам уже полез на почту(( Почте всего 5 дней.
    Продвинуть сайт в топ гугла, дизайн...
    С этим дизайном кому они нужны, сейчас ИИ лучше делает
     
  43. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    А мне норм дизайн, приятный для глаз и довольно минималистичный (что плюс для меня)
    Единственное может шрифт поменял бы, цвета приятные
     
    • Согласен Согласен x 1
  44. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Мне тоже зашло, когда увидел, что клауде сделал. Сразу хостинг купил и доменное имя)
    Вообще не было планов создавать новый сайт. Это я купился на этот дизайн и вот эту замануху с дуэлями. Две шпаги логотип. Красиво)

    с reddit.com что-то не получается. Никак даже косвенно не отрекламировать. Пробовал пост напиать без ссылок, без намека на рекламу, а в комментарии уже дать ссылку. Удаляют, звери)) Сижу и думаю ,как пройти автомодерацию. Очень жестко замодерировано там =((

    Вот в икс (бывший твитер) получается такая стратегия) Но нужно подписчиков в твиттере набрать. С завтра решил попробовать такую страту в твитере: свой пост 1 в день, а 3-4 раза в день чужие посты, где много подписчиков буду цитировать с какими-нибудь результатами. Найду пост про майкрософт, забабхаю дуэль с какой -нибудь компанией против майкрософт, а туда небольшой вывод сравнительный.

    Но скорее всего я быстро сгорю от такого плана раскрутки. Очень не люблю рутину изо дня в день. Ставлю на то ,что мне надоест через месяц =((
     
    Последнее редактирование: 23 Июнь 2026 в 17:31
  45. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Тоже рутину не люблю :strong:
     
  46. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Сделал обновление. Боялся сломать работающий сайт :D Сдела бекап, а то жалко будет потерять уже работающий сервис.
    Но обновление уж больно захотелось.
    Опять очень выручила Claude от антропик. Такое подробное ТЗ выкатила. Пробовал и гроком, и дипсиком и джемени. Идеально справилась именно Claude.
    ТЕХНИЧЕСКОЕ ЗАДАНИЕ: DUEL — Обновление v3.0
    Проект: duelstocks.com
    Файлы: app.py, index.html (static), config.py
    Дата составления: 2025-06
    Статус: ФИНАЛЬНОЕ ТЗ ДЛЯ ПЕРЕДАЧИ ПРОГРАММИСТУ

    СОДЕРЖАНИЕ
    1. Задача 1 — Удаление кнопки «ВКонтакте» из блока Share
    2. Задача 2 — Кнопка «DCF» для PRO-пользователей
    3. Задача 3 — Модель DCF: алгоритм расчёта
    4. Задача 4 — Новый эндпоинт /api/export_dcf
    5. Задача 5 — PDF-документ DCF
    6. Зависимости и требования к окружению
    ЗАДАЧА 1 — УДАЛЕНИЕ КНОПКИ «ВКОНТАКТЕ» ИЗ БЛОКА SHARE {#задача-1}
    1.1. Область применения
    Файл: static/index.html

    Кнопка «ВКонтакте» (VK) присутствует в блоке «Share» и отображается:

    • В карточке результата бесплатной дуэли
    • В карточке результата PRO-дуэли
    1.2. Что требуется сделать
    1.2.1. Найти в index.html все вхождения блока или кнопки «ВКонтакте» / «VK» в разделе share/поделиться. Они могут быть реализованы как:

    • <a> или <button> с текстом «ВКонтакте», «VK», «vk.com» или иконкой VK
    • Ссылка с href содержащим vk.com/share или vkontakte.ru
    • JavaScript-функция shareVK() или аналогичная
    1.2.2. Удалить полностью (HTML-элемент + любой связанный JS-обработчик/функцию) все найденные вхождения.

    1.2.3. Проверить: после удаления в блоке Share не должно остаться пустых <div>, пустых <li>, висящих запятых или нарушений CSS-сетки. При необходимости — скорректировать CSS-класс grid/flex контейнера, чтобы оставшиеся кнопки (Twitter/X, Telegram и др.) выровнялись корректно.

    1.2.4. Кнопку VK не скрывать через display:none — именно удалить из DOM.

    ЗАДАЧА 2 — КНОПКА «DCF» ДЛЯ PRO-ПОЛЬЗОВАТЕЛЕЙ {#задача-2}
    2.1. Область применения
    Файл: static/index.html

    2.2. Расположение новой кнопки
    В блоке результатов дуэли, рядом с красной кнопкой «Export PDF» (существующая кнопка для PRO), добавить зелёную кнопку «DCF».

    Точное расположение: кнопка «DCF» идёт сразу после кнопки «Export PDF» — справа от неё (или следующей строкой, если нет места), в том же контейнере.

    2.3. Стилизация кнопки DCF
    css
    /* Кнопка DCF — зелёная, стиль соответствует дизайн-системе сайта */
    background: var(--g); /* #00FFB2 */
    color: var(--bg); /* #080D18 */
    font-family: var(--fg); /* Space Grotesk */
    font-weight: 800;
    font-size: 15px;
    padding: 12px 28px;
    border-radius: var(--r); /* 10px */
    border: none;
    cursor: pointer;
    transition: opacity .2s, transform .15s;
    Текст кнопки: DCF

    Hover-состояние: opacity: 0.85; transform: translateY(-2px); — идентично кнопке Export PDF.

    2.4. Условие отображения
    Кнопка «DCF» показывается исключительно тогда, когда выполнены оба условия одновременно:

    1. Пользователь является PRO (is_pro === true в ответе /api/duel)
    2. Дуэль уже выполнена (блок результатов отображается)
    Кнопка не показывается бесплатным пользователям ни при каких условиях.

    2.5. Поведение при клике
    1. Кнопка переходит в состояние «загрузка»: текст меняется на ⏳ Generating..., кнопка становится неактивной (disabled), курсор wait.
    2. Выполняется POST-запрос на /api/export_dcf (описан в Задаче 4).
    3. После получения ответа:
      • Успех (HTTP 200, Content-Type: application/pdf): браузер инициирует скачивание файла. Имя файла: dcf_report_{TICKER_A}_vs_{TICKER_B}_{YYYYMMDD}.pdf. Кнопка возвращается в исходное состояние.
      • Ошибка (любой не-200 статус): показывается сообщение пользователю (например, небольшой toast/alert под кнопкой): "DCF generation failed. Please try again.". Кнопка возвращается в исходное состояние.
    2.6. Данные, передаваемые при клике
    При клике на «DCF» собираются данные из последней выполненной дуэли, которые уже хранятся в памяти JS (те же данные, что использует кнопка Export PDF):

    javascript
    // Тело POST-запроса (JSON):
    {
    "a": { /* объект данных компании A из ответа /api/duel */ },
    "b": { /* объект данных компании B из ответа /api/duel */ },
    "result": { /* объект result из ответа /api/duel */ }
    }
    ЗАДАЧА 3 — МОДЕЛЬ DCF: АЛГОРИТМ РАСЧЁТА {#задача-3}
    3.1. Общая концепция модели
    Модель называется DUEL Fundamental DCF.
    Это многофакторная модель дисконтирования свободного денежного потока, дополненная поправочными коэффициентами качества прибыли и эффективности капитала.

    Модель строит прогноз справедливой цены одной акции на 4 временны́х точки:

    • T0 — текущий момент (справедливая цена сейчас)
    • T+1 — через 1 год
    • T+2 — через 2 года
    • T+3 — через 3 года
    3.2. Исходные данные
    3.2.1. Данные, уже имеющиеся в объекте компании (из /api/duel)
    Поле в объекте компании Описание
    revenue_growth Среднегодовой рост выручки за 3 года, %
    op_cash_margin (CFO / Revenue) × 100, %
    roic (NOPAT / Invested Capital) × 100, %
    sloan_ratio ((Net Income − CFO − CFI) / Total Assets) × 100, %
    asset_turnover Revenue / Total Assets, коэффициент
    operating_margin (Operating Income / Revenue) × 100, %
    fcf_margin ((CFO − CAPEX) / Revenue) × 100, %
    factors_meta.roic.components.invested_capital Инвестированный капитал, USD
    factors_meta.roic.components.equity Собственный капитал, USD
    factors_meta.roic.components.lt_debt Долгосрочный долг, USD
    factors_meta.roic.components.st_debt Краткосрочный долг, USD
    factors_meta.roic.components.cash Денежные средства, USD
    factors_meta.op_cash_margin.components.cfo CFO (операционный денежный поток), USD
    factors_meta.fcf_margin.components.capex CAPEX, USD
    factors_meta.revenue_growth.components.revenue Последняя выручка, USD
    3.2.2. Данные, которые необходимо ДОПОЛНИТЕЛЬНО запросить из SEC EDGAR
    При вызове /api/export_dcf бэкенд должен дополнительно получить из SEC EDGAR следующие данные для каждой из двух компаний:

    A. Количество акций в обращении (Shares Outstanding)

    SEC XBRL-теги (перебирать в указанном порядке, взять первое непустое значение):

    1. CommonStockSharesOutstanding
    2. EntityCommonStockSharesOutstanding
    3. SharesOutstanding
    Единица: shares
    Период: предпочтительно последний 10-K; если нет — последний 10-Q.
    Использовать ту же функцию async_sec_get_fact() с prefer_annual=True.

    B. Базовая прибыль на акцию (Basic EPS)

    SEC XBRL-теги (перебирать в указанном порядке):

    1. EarningsPerShareBasic
    2. IncomeLossFromContinuingOperationsPerBasicShare
    Единица: USD/shares
    Период: предпочтительно последний 10-K; если нет — последний 10-Q.
    Знак: может быть отрицательным (убыток).

    3.3. Пошаговый алгоритм расчёта справедливой цены
    Шаг 1. Определение базового FCF
    FCF_base = CFO - CAPEX
    Если CFO отсутствует (None) → модель не может быть рассчитана для данной компании → в PDF вывести: "Insufficient data for DCF calculation" вместо числовых результатов.

    Если CAPEX отсутствует (None) → использовать CAPEX = 0 (консервативное допущение, задокументировать в PDF).

    Шаг 2. Определение базовой ставки роста FCF (g_base)
    g_base = revenue_growth / 100
    Если revenue_growth отсутствует (None) → g_base = 0.05 (5% — консервативный дефолт).

    Ограничение: g_base зажимается в диапазон [-0.10, 0.35]:

    g_base = max(-0.10, min(0.35, g_base))
    Шаг 3. Поправка на качество прибыли (Sloan Ratio Adjustment)
    Sloan Ratio измеряет разрыв между «бумажной» и «денежной» прибылью.
    Логика: если Sloan Ratio высокий (много начислений, мало cash), рост в первый год замедляется.

    python
    sloan = sloan_ratio # значение из объекта, в процентах

    if sloan is None:
    sloan_penalty = 0.0 # если данных нет — штрафа нет, модель не ломается
    elif sloan > 5.0:
    sloan_penalty = 0.03 # умеренный штраф: -3% к g в год 1
    elif sloan > 10.0:
    sloan_penalty = 0.06 # сильный штраф: -6% к g в год 1
    else:
    sloan_penalty = 0.0 # Sloan ratio хороший — штрафа нет
    Важно: sloan_penalty применяется только к Year 1, не к Year 2 и Year 3.

    Шаг 4. Поправка на эффективность капитала (ROIC Adjustment)
    ROIC показывает, насколько эффективно компания создаёт стоимость из вложенного капитала.

    python
    roic_val = roic # значение из объекта, в процентах

    if roic_val is None:
    roic_multiplier = 1.0 # данных нет — нейтральный множитель
    elif roic_val >= 20.0:
    roic_multiplier = 1.10 # высокий ROIC: рост x1.1
    elif roic_val >= 10.0:
    roic_multiplier = 1.05 # средний ROIC: рост x1.05
    elif roic_val >= 0.0:
    roic_multiplier = 1.0 # низкий, но положительный ROIC: нейтрально
    else:
    roic_multiplier = 0.90 # отрицательный ROIC: рост x0.9
    Шаг 5. Поправка на маржинальность (FCF Margin Quality)
    python
    fcf_m = fcf_margin # в процентах

    if fcf_m is None:
    margin_multiplier = 1.0
    elif fcf_m >= 20.0:
    margin_multiplier = 1.08 # высокая FCF маржа — дополнительный буст
    elif fcf_m >= 10.0:
    margin_multiplier = 1.04
    elif fcf_m >= 0.0:
    margin_multiplier = 1.0
    else:
    margin_multiplier = 0.92 # отрицательный FCF — штраф
    Шаг 6. Прогноз FCF по годам (Years 1–3)
    python
    # Скорректированная ставка роста для каждого года:

    g_year1 = (g_base - sloan_penalty) * roic_multiplier * margin_multiplier
    g_year2 = g_base * roic_multiplier * margin_multiplier
    g_year3 = g_base * roic_multiplier * margin_multiplier

    # Дополнительное ограничение на годовые ставки:
    # g_yearN зажимается в [-0.15, 0.40]
    g_year1 = max(-0.15, min(0.40, g_year1))
    g_year2 = max(-0.15, min(0.40, g_year2))
    g_year3 = max(-0.15, min(0.40, g_year3))

    # Прогноз FCF:
    FCF_year1 = FCF_base * (1 + g_year1)
    FCF_year2 = FCF_year1 * (1 + g_year2)
    FCF_year3 = FCF_year2 * (1 + g_year3)
    Шаг 7. Ставка дисконтирования (WACC)
    Используется упрощённая WACC, основанная на доступных данных из SEC.

    python
    equity = factors_meta.roic.components.equity # USD
    lt_debt = factors_meta.roic.components.lt_debt # USD, может быть None → 0
    st_debt = factors_meta.roic.components.st_debt # USD, может быть None → 0
    cash_val = factors_meta.roic.components.cash # USD, может быть None → 0

    total_debt = (lt_debt or 0) + (st_debt or 0)
    total_capital = (equity or 0) + total_debt

    if total_capital <= 0:
    # Нет данных о капитале → использовать дефолтный WACC
    wacc = 0.10
    else:
    weight_equity = equity / total_capital if equity else 0
    weight_debt = total_debt / total_capital

    # Cost of Equity: базовый CAPM
    # Risk-free rate = 4.5% (актуально 2024–2025)
    # Market risk premium = 5.5%
    # Beta: определяется по ROIC:
    if roic_val is None:
    beta = 1.0
    elif roic_val >= 25:
    beta = 0.85 # высокий ROIC = низкий бета-риск
    elif roic_val >= 15:
    beta = 1.0
    elif roic_val >= 5:
    beta = 1.15
    else:
    beta = 1.35 # низкий/отрицательный ROIC = высокий риск

    cost_of_equity = 0.045 + beta * 0.055

    # Cost of Debt: фиксировано на 5.5% (средняя ставка корпоративного долга US)
    # Tax rate: 21% (ставка налога на прибыль корпораций в США)
    cost_of_debt_after_tax = 0.055 * (1 - 0.21) # = 0.04345

    wacc = weight_equity * cost_of_equity + weight_debt * cost_of_debt_after_tax

    # Ограничение WACC: [0.07, 0.18]
    wacc = max(0.07, min(0.18, wacc))
    Шаг 8. Терминальная стоимость (Terminal Value)
    Модель Гордона с консервативной терминальной ставкой роста:

    python
    # Терминальная ставка роста (g_terminal):
    # = min(g_base / 2, 0.03) — не более 3%, не более половины базового роста
    g_terminal = min(g_base / 2.0, 0.03)
    g_terminal = max(0.005, g_terminal) # не менее 0.5%

    # Терминальная стоимость (на конец Year 3):
    TV = (FCF_year3 * (1 + g_terminal)) / (wacc - g_terminal)

    # Защита от деления на ноль:
    if wacc <= g_terminal:
    wacc_safe = g_terminal + 0.03
    TV = (FCF_year3 * (1 + g_terminal)) / wacc_safe
    Шаг 9. Дисконтирование и расчёт Enterprise Value
    python
    # Дисконтированные FCF:
    PV_FCF1 = FCF_year1 / (1 + wacc) ** 1
    PV_FCF2 = FCF_year2 / (1 + wacc) ** 2
    PV_FCF3 = FCF_year3 / (1 + wacc) ** 3

    # Дисконтированная терминальная стоимость:
    PV_TV = TV / (1 + wacc) ** 3

    # Enterprise Value:
    EV = PV_FCF1 + PV_FCF2 + PV_FCF3 + PV_TV
    Шаг 10. Расчёт Equity Value и Справедливой цены акции
    python
    # Equity Value = Enterprise Value - Net Debt
    net_debt = total_debt - (cash_val or 0)
    equity_value = EV - net_debt

    # Защита от отрицательного Equity Value:
    if equity_value <= 0:
    equity_value = EV * 0.5 # консервативный fallback

    # Справедливая цена (T0):
    if shares_outstanding is None or shares_outstanding <= 0:
    # Нет данных об акциях → fallback через EPS
    if basic_eps is not None and basic_eps != 0:
    # P/E fallback: использовать typical P/E = 18 (консервативный)
    fair_price_t0 = basic_eps * 18.0
    else:
    # Полное отсутствие данных
    fair_price_t0 = None
    else:
    fair_price_t0 = equity_value / shares_outstanding
    Шаг 11. Прогноз цены на T+1, T+2, T+3
    Прогнозные цены строятся путём пересчёта Equity Value с FCF на каждый год:

    python
    # T+1: добавляем FCF_year1 к Equity Value (реинвестиция в бизнес)
    equity_value_y1 = equity_value + FCF_year1
    price_y1 = equity_value_y1 / shares_outstanding if shares_outstanding else None

    # T+2:
    equity_value_y2 = equity_value_y1 + FCF_year2
    price_y2 = equity_value_y2 / shares_outstanding if shares_outstanding else None

    # T+3:
    equity_value_y3 = equity_value_y2 + FCF_year3
    price_y3 = equity_value_y3 / shares_outstanding if shares_outstanding else None
    Если shares_outstanding отсутствует и был использован P/E fallback:

    python
    price_y1 = fair_price_t0 * (1 + g_year1) if fair_price_t0 else None
    price_y2 = price_y1 * (1 + g_year2) if price_y1 else None
    price_y3 = price_y2 * (1 + g_year3) if price_y2 else None
    Шаг 12. Финальная структура результата DCF (для одной компании)
    Функция compute_dcf(company_data, shares_outstanding, basic_eps) возвращает словарь:

    python
    {
    "ticker": str,
    "sufficient_data": bool, # False если FCF_base не может быть вычислен
    "inputs": {
    "fcf_base": float, # FCF_base, USD
    "revenue": float,
    "g_base": float, # в долях (0.12 = 12%)
    "roic": float | None,
    "fcf_margin": float | None,
    "sloan_ratio": float | None,
    "wacc": float,
    "g_terminal": float,
    "shares_outstanding": float | None,
    "basic_eps": float | None,
    "capex_assumed_zero": bool, # True если CAPEX был None и подставлен 0
    "eps_fallback_used": bool, # True если использован P/E fallback
    },
    "adjustments": {
    "sloan_penalty": float,
    "roic_multiplier": float,
    "margin_multiplier": float,
    "g_year1": float,
    "g_year2": float,
    "g_year3": float,
    },
    "projections": {
    "fcf_year1": float,
    "fcf_year2": float,
    "fcf_year3": float,
    "pv_fcf1": float,
    "pv_fcf2": float,
    "pv_fcf3": float,
    "tv": float,
    "pv_tv": float,
    "ev": float,
    "net_debt": float,
    "equity_value": float,
    },
    "prices": {
    "t0": float | None, # справедливая цена сейчас
    "t1": float | None, # через 1 год
    "t2": float | None, # через 2 года
    "t3": float | None, # через 3 года
    }
    }
    3.4. Обработка граничных случаев (требования к устойчивости)
    Ситуация Поведение
    CFO is None sufficient_data = False, вывести "—" вместо цен в PDF
    CAPEX is None CAPEX = 0, установить флаг capex_assumed_zero = True
    shares_outstanding is None Попытаться использовать EPS-fallback (P/E=18)
    basic_eps is None AND shares_outstanding is None prices = {t0: None, t1: None, t2: None, t3: None}
    sloan_ratio is None sloan_penalty = 0, модель не ломается
    roic is None roic_multiplier = 1.0, beta = 1.0
    fcf_margin is None margin_multiplier = 1.0
    revenue_growth is None g_base = 0.05
    equity is None wacc = 0.10 (дефолтный)
    wacc <= g_terminal wacc_safe = g_terminal + 0.03 (защита от деления на ноль)
    Любое деление на ноль в процессе try/except → логировать, вернуть None для этого поля
    EV < 0 equity_value = EV * 0.5 (fallback), логировать предупреждение
    Любая цена < 0 Заменить на None, в PDF вывести "—"
    Категорический запрет: нигде в модели не должно быть деления без проверки знаменателя на != 0.

    ЗАДАЧА 4 — НОВЫЙ ЭНДПОИНТ /api/export_dcf {#задача-4}
    4.1. Метод и маршрут
    POST /api/export_dcf
    Content-Type: application/json
    4.2. Тело запроса
    Идентично /api/export_pdf:

    json
    {
    "a": { /* объект компании A (весь объект из /api/duel) */ },
    "b": { /* объект компании B */ },
    "result": { /* объект result из /api/duel */ }
    }
    4.3. Авторизация
    Эндпоинт не требует отдельной проверки PRO-статуса на уровне сервера (кнопка уже скрыта от не-PRO на фронтенде). Однако рекомендуется добавить минимальную защиту: проверять наличие корректного тела запроса и возвращать 400 если тело пустое или отсутствуют ключи a, b, result.

    4.4. Процедура обработки на сервере
    1. Распарсить JSON из тела запроса.
    2. Извлечь ticker_a = data['a']['ticker'] и ticker_b = data['b']['ticker'].
    3. Загрузить дополнительные данные из SEC EDGAR (асинхронно, через существующий aiohttp.ClientSession):
      • Для компании A: shares_outstanding_a, basic_eps_a
      • Для компании B: shares_outstanding_b, basic_eps_b
      • Использовать существующие функции: get_ciks_for_ticker_async() + async_sec_get_fact()
      • Теги для акций: ['CommonStockSharesOutstanding', 'EntityCommonStockSharesOutstanding', 'SharesOutstanding']
      • Теги для EPS: ['EarningsPerShareBasic', 'IncomeLossFromContinuingOperationsPerBasicShare']
      • CIK берётся из data['a'].get('used_cik') — он уже известен и передаётся в теле запроса; запрашивать CIK заново НЕ нужно. Если used_cik отсутствует в объекте — тогда получить через get_ciks_for_ticker_async().
    4. Запустить compute_dcf(data['a'], shares_outstanding_a, basic_eps_a) для компании A.
    5. Запустить compute_dcf(data['b'], shares_outstanding_b, basic_eps_b) для компании B.
    6. Вызвать generate_dcf_pdf(data['a'], data['b'], data['result'], dcf_a, dcf_b) → получить bytes.
    7. Вернуть PDF как application/pdf с заголовком Content-Disposition: attachment; filename=dcf_report_{A}_{B}_{date}.pdf.
    4.5. Обработка ошибок эндпоинта
    Ошибка HTTP-код JSON-ответ
    Пустое тело 400 {"error": "no_data"}
    Отсутствует ключ a, b или result 400 {"error": "invalid_data"}
    Ошибка загрузки SEC EDGAR 503 {"error": "sec_unavailable"}
    Ошибка генерации PDF 500 {"error": "pdf_generation_failed"}
    reportlab не установлен 503 {"error": "pdf_not_available"}
    ЗАДАЧА 5 — PDF-ДОКУМЕНТ DCF {#задача-5}
    Функция: generate_dcf_pdf(a_data, b_data, duel_result, dcf_a, dcf_b) -> bytes

    5.1. Общие требования к документу
    • Формат страницы: Letter (8.5 × 11 дюймов)
    • Поля: top=0.4in, bottom=0.4in, left=0.5in, right=0.5in
    • Библиотека: reportlab (уже установлена)
    • Язык документа: только английский
    • Кодировка: UTF-8
    5.2. Структура PDF (строго по разделам)
    Раздел 1: Заголовок
    ⚔ DUEL — DCF Valuation Report
    {TICKER_A} vs {TICKER_B}
    Generated: {YYYY-MM-DD}
    Шрифт заголовка: Helvetica-Bold, 22pt, цвет: зелёный (RGB: 0, 200, 130).
    Подзаголовок: Helvetica-Bold, 14pt, чёрный.
    Дата: Helvetica, 10pt, серый.
    Выравнивание: по центру.

    Раздел 2: Результат дуэли (краткая сводка)
    Одна строка:

    Duel Winner: {WINNER_TICKER} | Score: {SCORE_A} — {SCORE_B} | Strength: {STRENGTH}
    Шрифт: Helvetica-Bold 11pt. Победитель выделен зелёным, проигравший — красным.

    Раздел 3: Ценовой прогноз — График
    3.1. Программная генерация графика через reportlab Drawing

    Тип: линейный график (линии + точки).

    Оси:

    • Ось X: 4 точки — Now, +1 Year, +2 Years, +3 Years
    • Ось Y: цена в USD, диапазон автоматический (от min(всех цен) * 0.85 до max(всех цен) * 1.15), с округлением до красивых значений
    Линии:

    • Компания-победитель дуэли: зелёная сплошная линия, толщина 2.5pt
    • Компания-проигравший дуэли: красная сплошная линия, толщина 2.5pt
    • На каждой точке — закрашенный кружок (5pt diameter), цвет совпадает с цветом линии
    • Над/под каждой точкой — подпись цены: $XXX.XX
    Легенда (под графиком или в правом верхнем углу):

    ● {TICKER_WINNER} (Winner) [зелёный квадрат/кружок]
    ● {TICKER_LOSER} [красный квадрат/кружок]
    Размер графика: ширина 6.5in, высота 3.0in.

    Если для одной или обеих компаний sufficient_data = False или все цены None: Вместо графика вывести серый прямоугольник с текстом:
    "Chart unavailable: insufficient data for {TICKER}"

    Раздел 4: Ценовой прогноз — Таблица
    Таблица с 5 столбцами:

    Period {TICKER_A} Price {TICKER_B} Price {TICKER_A} EV ($B) {TICKER_B} EV ($B)
    Now (T0) $XXX.XX $XXX.XX $XXX.XX B $XXX.XX B
    +1 Year $XXX.XX $XXX.XX — —
    +2 Years $XXX.XX $XXX.XX — —
    +3 Years $XXX.XX $XXX.XX — —
    Правила форматирования:

    • Цены: $ + число с 2 знаками после запятой. Если None → "—"
    • EV: в миллиардах USD с 2 знаками. Если EV < 1B — показать в миллионах: $XXX M
    • Ячейка победителя по каждой строке — выделена светло-зелёным фоном (220, 255, 230)
    • Заголовок таблицы: серый фон (100, 100, 100), белый текст, Helvetica-Bold 10pt
    Ширина столбцов: [1.2in, 1.3in, 1.3in, 1.5in, 1.5in]

    Раздел 5: Ключевые входные параметры (Input Summary)
    Две колонки (A | B), таблица:

    Parameter {TICKER_A} {TICKER_B}
    Revenue (latest) $X.XX B $X.XX B
    FCF Base $X.XX B $X.XX B
    Revenue Growth (3Y CAGR) X.XX% X.XX%
    FCF Margin X.XX% X.XX%
    Operating Margin X.XX% X.XX%
    ROIC X.XX% X.XX%
    Sloan Ratio X.XX% X.XX%
    Shares Outstanding X.XX B X.XX B
    Basic EPS $X.XX $X.XX
    WACC (calculated) X.XX% X.XX%
    Terminal Growth Rate X.XX% X.XX%
    Если значение None → "N/A".
    Revenue и FCF в миллиардах с 2 знаками.

    Раздел 6: Детали расчёта (Calculation Details)
    Блок для каждой компании (сначала A, потом B) отдельно:

    Подзаголовок: {TICKER} — DCF Calculation Detail

    Таблица поправочных коэффициентов:

    Adjustment Value Applied to
    Base Growth Rate (g_base) X.XX% All years
    Sloan Penalty -X.XX% Year 1 only
    ROIC Multiplier X.XXx All years
    FCF Margin Multiplier X.XXx All years
    Effective g Year 1 X.XX% Year 1
    Effective g Year 2 X.XX% Year 2
    Effective g Year 3 X.XX% Year 3
    Таблица дисконтирования:

    Year FCF Projected Discount Factor PV of FCF
    Year 1 $X.XX B X.XXXX $X.XX B
    Year 2 $X.XX B X.XXXX $X.XX B
    Year 3 $X.XX B X.XXXX $X.XX B
    Terminal Value — X.XXXX $X.XX B
    Enterprise Value $X.XX B
    Net Debt -$X.XX B
    Equity Value $X.XX B
    Footnote под каждой таблицей (мелкий шрифт, серый):
    "Discount Factor = 1 / (1 + WACC)^n where WACC = X.XX%"

    Если capex_assumed_zero = True для данной компании:
    "⚠ CAPEX data unavailable from SEC EDGAR — assumed $0 (conservative estimate)"

    Если eps_fallback_used = True:
    "⚠ Shares outstanding not available — price estimated via P/E multiple (18x Basic EPS)"

    Раздел 7: Методология и формулы
    Заголовок: Methodology & Formulas

    Текст (строго на английском, без изменений):

    DUEL Fundamental DCF Model — Calculation Principles

    The DUEL DCF model is a multi-factor discounted cash flow valuation that
    incorporates operational quality metrics derived exclusively from SEC EDGAR filings.

    CORE FORMULA:
    Enterprise Value = Σ [FCF_n / (1+WACC)^n] + Terminal Value / (1+WACC)^3

    Where:
    FCF_n = Free Cash Flow in year n (projected from FCF_base)
    WACC = Weighted Average Cost of Capital

    Terminal Value = FCF_3 × (1 + g_terminal) / (WACC − g_terminal)

    FREE CASH FLOW:
    FCF_base = CFO − CAPEX
    (Source: SEC EDGAR 10-K / 10-Q filings)

    BASE GROWTH RATE (g_base):
    g_base = 3-Year Revenue CAGR = (Revenue_current / Revenue_3y)^(1/3) − 1
    Clamped to [−10%, +35%]

    SLOAN RATIO ADJUSTMENT (Year 1 only):
    Sloan Ratio = (Net Income − CFO − CFI) / Total Assets × 100
    If Sloan > 5%: g_year1 reduced by 3% (moderate accruals detected)
    If Sloan > 10%: g_year1 reduced by 6% (high accruals detected)
    If unavailable: no adjustment applied (model remains stable)

    ROIC QUALITY MULTIPLIER:
    ROIC ≥ 20%: growth multiplier = 1.10
    ROIC ≥ 10%: growth multiplier = 1.05
    ROIC ≥ 0%: growth multiplier = 1.00
    ROIC < 0%: growth multiplier = 0.90
    If unavailable: multiplier = 1.00

    FCF MARGIN QUALITY MULTIPLIER:
    FCF Margin ≥ 20%: multiplier = 1.08
    FCF Margin ≥ 10%: multiplier = 1.04
    FCF Margin ≥ 0%: multiplier = 1.00
    FCF Margin < 0%: multiplier = 0.92
    If unavailable: multiplier = 1.00

    WACC CALCULATION:
    WACC = (E/V) × Re + (D/V) × Rd × (1 − Tc)
    Where:
    Re = Cost of Equity = Risk-Free Rate (4.5%) + Beta × Market Premium (5.5%)
    Rd = Cost of Debt = 5.5% (US corporate average)
    Tc = Corporate Tax Rate = 21%
    Beta determined by ROIC tier (0.85 to 1.35)
    WACC clamped to [7%, 18%]

    TERMINAL GROWTH RATE:
    g_terminal = min(g_base / 2, 3%)
    Minimum floor: 0.5%

    EQUITY VALUE:
    Equity Value = Enterprise Value − Net Debt
    Net Debt = Total Debt − Cash & Equivalents

    FAIR VALUE PER SHARE (T0):
    Fair Value = Equity Value / Shares Outstanding
    (Fallback if shares unavailable: Basic EPS × 18x P/E multiple)
    Раздел 8: Disclaimer (Отказ от ответственности)
    ОБЯЗАТЕЛЬНЫЙ БЛОК. Шрифт: Helvetica 8pt, серый цвет, рамка с фоном.

    ⚠ IMPORTANT DISCLAIMER

    This DCF Valuation Report is generated automatically using financial data sourced
    exclusively from SEC EDGAR public filings. It is provided for INFORMATIONAL AND
    EDUCATIONAL PURPOSES ONLY.

    This report does NOT constitute:
    - Investment advice or recommendations
    - An offer to buy or sell any security
    - Financial, legal, or tax advice

    The projections presented are based on simplified mathematical models and
    historical data. Actual future performance may differ materially from these
    projections. Past data does not guarantee future results.

    Always conduct your own due diligence or consult a qualified financial advisor
    before making any investment decisions.
    Раздел 9: Футер
    Report generated by DUEL — duelstocks.com
    Transparent, SEC-based stock comparison tool.
    Data sourced exclusively from SEC EDGAR public database.
    Шрифт: Helvetica 9pt, серый, по центру.
    Ссылка duelstocks.com — не гиперссылка в PDF (reportlab не поддерживает кликабельные ссылки в базовой версии без доп. библиотек), просто текст.

    5.3. Стиль оформления таблиц (общие правила для всего документа)
    python
    # Все таблицы в документе:
    TableStyle([
    ('BACKGROUND', (0, 0), (-1, 0), colors.HexColor('#646464')), # заголовок
    ('TEXTCOLOR', (0, 0), (-1, 0), colors.white),
    ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
    ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
    ('FONTSIZE', (0, 0), (-1, 0), 10),
    ('FONTSIZE', (0, 1), (-1, -1), 9),
    ('BOTTOMPADDING', (0, 0), (-1, 0), 6),
    ('TOPPADDING', (0, 0), (-1, -1), 4),
    ('BACKGROUND', (0, 1), (-1, -1), colors.HexColor('#F5F5F5')),
    ('GRID', (0, 0), (-1, -1), 0.5, colors.grey),
    ('ROWBACKGROUNDS', (0, 1), (-1, -1), [colors.white, colors.HexColor('#F0F0F0')]),
    ])
    ЗАВИСИМОСТИ И ТРЕБОВАНИЯ К ОКРУЖЕНИЮ {#зависимости}
    6.1. Python-зависимости
    Все зависимости уже установлены (см. requirements.txt):

    Flask==2.3.3
    flask-cors==4.0.0
    PyMySQL==1.1.0
    aiohttp==3.11.0
    reportlab==4.2.2
    requests==2.31.0
    Дополнительных зависимостей не требуется.

    6.2. Требования к функции generate_dcf_pdf
    • НЕ использовать matplotlib, plotly или любые внешние графические библиотеки для графика.
    • График строить исключительно средствами reportlab (reportlab.graphics.shapes, reportlab.graphics.charts.lineplots, или вручную через Drawing, Line, Circle, String из reportlab.graphics.shapes).
    • Функция должна всегда возвращать bytes или None. Никогда не должна выбрасывать необработанное исключение — весь код в try/except.
    6.3. Новые функции в app.py
    Добавить в app.py следующие новые функции (без изменения существующих):

    1. compute_dcf(company_data: dict, shares_outstanding: float | None, basic_eps: float | None) -> dict
    2. generate_dcf_pdf(a_data: dict, b_data: dict, duel_result: dict, dcf_a: dict, dcf_b: dict) -> bytes | None
    3. Добавить маршрут: @app.route('/api/export_dcf', methods=['POST'])
    Существующие функции (generate_pdf_report, compute_duel, async_build_company_data и другие) — не изменять.

    6.4. Изменения в index.html
    1. Удалить кнопку VK (Задача 1).
    2. Добавить кнопку DCF (Задача 2).
    3. Не изменять логику существующих кнопок (Export PDF, Twitter, Telegram и др.).
    4. Не изменять CSS-переменные и структуру страницы.
    ИТОГОВЫЙ ЧЕКЛИСТ ДЛЯ ПРОГРАММИСТА
    • 1.1. Кнопка VK удалена из блока Share (для всех пользователей, все места в коде)
    • 1.2. После удаления VK — нет пустых DOM-элементов, layout не сломан
    • 2.1. Кнопка DCF добавлена в index.html рядом с Export PDF
    • 2.2. Кнопка DCF показывается только PRO-пользователям
    • 2.3. Кнопка DCF имеет корректный стиль (зелёная, Space Grotesk, hover-эффект)
    • 2.4. При клике — POST на /api/export_dcf с корректным телом
    • 2.5. При успехе — скачивание PDF; при ошибке — сообщение пользователю
    • 3.1. Функция compute_dcf реализована по алгоритму из Задачи 3
    • 3.2. Все граничные случаи (None, деление на ноль) обработаны
    • 3.3. Функция не выбрасывает необработанные исключения
    • 4.1. Эндпоинт /api/export_dcf реализован (POST)
    • 4.2. Эндпоинт загружает shares_outstanding и basic_eps из SEC EDGAR
    • 4.3. Эндпоинт возвращает PDF или корректный JSON с ошибкой
    • 5.1. PDF содержит все 9 разделов в указанном порядке
    • 5.2. График построен средствами reportlab (без matplotlib)
    • 5.3. Победитель дуэли — зелёная линия, проигравший — красная линия
    • 5.4. Disclaimer (Раздел 8) присутствует в полном объёме
    • 5.5. Футер со ссылкой на duelstocks.com присутствует
    • 5.6. Документ полностью на английском языке
    • 6.1. requirements.txt не изменён (новых зависимостей нет)
    • 6.2. Существующие функции app.py не изменены

    Что сделано. ВК убрал, толку от расшаривания в ВК врядли будет. Снес.
    И освободил место для DCF модели.
    Это генерируется еще один пдф файл с отчетом.

    А, вчера внедрил текстовый блок, который генерируется на основе итогов дуэли.
    [​IMG]
    [​IMG]

    Такой DCF модельки нигде нет. С поправочными коэффциентам на вычисленные коэффциенты.
    Если Слоан показывает плохое качество прибыли. То дисконтирование денежных потоков нужно немного замедлить, чтобы этот Слоан подправился. На первый год идет понижение.
    Т.е. расчитывается не рыночная цена, а справедливая оценка- консервативный расчет происходит. Методологие подробно Клауде описал в ТЗ.
    И отработал в коде идеально.
    Выглядит этот так:
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]

    Доволен до ужаса :confused:
     
    • Красава! Красава! x 1
    Последнее редактирование: 26 Июнь 2026 в 15:55
  47. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Треш какой-то происходит. Отвлекся на ЧМ.
    А тут со дна постучали. Все в "ж" летит (что касается нашего рынка) не про s&p 500))
    Зашел глянуть свою страту, а она отвесно летит. При том, что доля ОФЗ 75% :D
    Сливают все, даже офз льют)

    Паника какая-то пошла? Кровь по стенам?))

    [​IMG]
    [​IMG]

    Пошел смотреть какая сейчас доходность.
    Уже больше 16% можно профиксировать. Щас в долг буду закупать :D
    У меня скоро дивиденды по икс 5 и сберу. Ими и расплачусь)

    [​IMG]

    сейчас самая выгодная 53 и 43, какая дюрация больше устраивает, такую можно и докупить) 16,22% годовых на 10+ лет)
    Доходность в районе 17% по офз была, когда ставка была +20%
    а тут при ставке 14,25 по офз раздают 16,22%


    Под шумок чемпионатам мира что-то происходит паническое на нашем рынке.
    Так менее заметно))
     
    Последнее редактирование: 2 Июль 2026 в 17:03
  48. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Не верит рынок. Видимо ожидает что то явно нехорошее. Ключ падает (хоть и не так быстро, как ожидали, но все же), а ОФЗ при этом не растут, а наоборот. Доходность по купонам уже выше ключа, дичь какая-то)
     
    Последнее редактирование: 2 Июль 2026 в 17:34
  49. Авер

    Авер Немного маф-эквити мне не помешает

    В Семье с:
    23 Сентябрь 2014
    Сообщения:
    31.347
    Лайков получено:
    1.418
    Рейтинги:
    +11.179
    Я думаю, рынок ожидает разворота по ключу и тренд на его повышение снова
     
  50. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Ну тут 2 варика
    1. Кто-то из крупных игроков знает какую-то гадость. Например, у нас в августе часто вылетает какое-то "г" достаточно часто.
    Но тут выборы в ГД на носу в сентябре этого года.
    До выборов весь негатив удержат.
    Даже повышение ЖКХ перенесли на октябрь.
    ))) Типа подарок от депутатов))
    Позор.
    Ну и 2 вариант.
    Паника, и так называемый шортсквиз от маржин колов.
    Кто с плечом баловался в лонг. Вот тех во-первых, выносит, а во-вторых, схлопывание лонгов от Дяди Коли само по себе является разгоном вниз. - дополнительное топливо.
    Закрытие лонга=топливо вниз.

    В бумаги я не лезу. (Не наращиваю)
    А вот ОФЗ могу обесцениться только если государство не будет способно платить.

    А сейчас налоговая что-что, а вот научились очень эффективно собирать налоги..
    То, что бизнес уже почти полностью задушили, это уже другая сторона медали))
    Плюс выпустят новые ОФЗ, покроют старые, где экспирация оканчивается.

    В какой вариант верить.
    Хз.
    Мне кажется общее разочарование, плюс дяди коли, ну и скажем так- геополитическая х.. дальше запикаю.

    С бензином какая-то жесть.

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

    Все равно хотел заменить на современную систему. Подорожает потом локти буду кусать.поехал в шоу рум, выбрал и зафиксировал цены с доставкой на 15 июля) а монтаж будет в августе. Месяц будут дома лежать))
    Рано купил, но ощущение от того, что увидел на рынке нехорошее...
    Так что если предстоит какая-то дорогая покупка надо покупать.
    Дешевле точно не будет, а вот скакнуть цены могут((
     
    • Красава! Красава! x 1
    Последнее редактирование: 2 Июль 2026 в 20:46
  51. TopicStarter Overlay
    Сталин

    Сталин Застрельщик №1

    В Семье с:
    7 Апрель 2017
    Сообщения:
    18.577
    Лайков получено:
    2.195
    Рейтинги:
    +5.715
    Телефон приехал. Все хорошо, но не того цвета, который заказывал. :D

    На озоне решил заказать телефон. По срокам ожидания -была пара переносов дат доставки, в итоге около месяца ехала посылка.
    Начал уже нервничать, так как товар нельзя было без оплаты заказать, там еще и пошлина плюс.
    Вот сижу и думаю, какой отзыв о продавце оставить :D

    [​IMG]
    [​IMG]
    2 или 1 влупить.
    Вроде для 1 слишком жестко.
    Если бы перепутали не тольо цвет, но и товар. Приехал бы 10А вместо 10.
    Или 3. (спасибо, что не розовый отправили)
     
    Последнее редактирование: 3 Июль 2026 в 20:29