ny_quant: (Default)
[personal profile] ny_quant
Если совсем кратко, моя стратегия (как и многие другие, если не все) выбирает акции для покупки, и в итоге их продает. К моменту написания предыдущего поста на эту тему, закончился очередной цикл и работ и на меня смотрела с экрана вполне работающая версия, которую - как все легко догадались - мне немедленно захотелось улучшить. В связи с этим я написал следующий промпт:

Currently, we immediately replace sold stocks in the portfolio by the best stock per [existing selection criterion] that is still not in our current portfolio by investing in it all the cash received from the sale. Now I want to change it by requiring that the eligible replacements satisfy [an additional criterion].
If there are no eligible candidates, I want the sales proceeds to stay in cash. We will need a list of cash_flows, initialized to the empty list. If there are no eligible candidates to replace the sold stock then the dollar amount that we wanted to replace but couldn't is appended to the list "cash_flows".
The main loops in the function compute_daily_history()
        for day in days: 
will begin with with checking the state of the variable "cash_flows". If not empty, we attempt to find new eligible candidates. If they exist we buy them one by one, releasing the cash flows one by one. If they don't exist then nothing doing and we proceed to the next statement.

Мне кажется, не надо быть специалистом ни в чем, чтобы понять смысл происходящего, это довольно просто. Более того, не надо быть крутым программистом или даже что-то знать о питоне, чтобы оценить уровень продукта, предложенного мне в ответ ИИ. (Замечу в скобках, что код в данном случае получился едва ли не короче, чем промпт, что не характерно.) Ниже все 13 строк, не ленитесь, почитайте прежде чем продолжать.
            # --------------------------------------------------
            # Attempt reinvestment from cash_flows
            # --------------------------------------------------
            if cash_flows:
                new_cash_flows = []
                for cash_amt in cash_flows:
                    new_t, new_st, sorted_rets = find_replacement(day, holdings, strategy_parameters) 
                    if new_t is not None:
                        price = price_df.at[day, new_t]
                        sh = cash_amt / price
                        shares[new_t] = shares.get(new_t, 0.0) + sh    
                        holdings[new_t] = 1.0
                    else:
                        new_cash_flows.append(cash_amt)        
                cash_flows = new_cash_flows

Дуся, грю, ты что ж это малюешь? Ты мне предлагаешь каждый день вызывать нашу самую дорогую функцию, возможно десятки раз, с одними теми же аргументами? Так не пойдет! Надо отдать должное, чатгпт не стал спорить и код враз переписал.

Мораль, кмк, тут очень простая. Конечно, ИИ может во многом помочь уже сегодня. Но доверить ему пока что нельзя ничего. Все, кто думает иначе, будут сами себе злобные буратины.

Date: 2025-12-20 03:16 am (UTC)
From: [identity profile] smirnfil.livejournal.com
Потому что даже если программа работает на си 2 секунды,а на питоне 3 минуты(что кстати в 2025 большая редкость) этот выигрыш по времени будет съеден более медленной разработкой и отладкой

Date: 2025-12-20 03:37 am (UTC)
From: [identity profile] spamsink.livejournal.com

В каком смысле более медленной разработкой? С точки зрения человека, что сделать copy-paste питоновского кода, что сишного кода из ответа ИИ — нет разницы.

Date: 2025-12-20 04:35 am (UTC)
From: [identity profile] smirnfil.livejournal.com
Есть большая разница в затратах времени если код не работает

Date: 2025-12-20 04:41 am (UTC)
From: [identity profile] spamsink.livejournal.com

Отлаживать программу на языке с более строгой типизацией обычно проще.

Date: 2025-12-20 04:50 am (UTC)
From: [identity profile] smirnfil.livejournal.com
Строгость типизации языка у меня где-то на двадцать пятом месте в причинах сложностей отладки. Было бы интересно найти исследования где исследовали данный вопрос подробнее. В плюсах столько подводных камней что типизация не поможет. Особенно если код пишет ии и есть все шансы что он использует плохие части языка.

Date: 2025-12-20 04:57 am (UTC)
From: [identity profile] spamsink.livejournal.com

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

Date: 2025-12-21 04:49 am (UTC)
From: [identity profile] smirnfil.livejournal.com

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

Profile

ny_quant: (Default)
ny_quant

December 2025

S M T W T F S
 12 34 56
7 89 10 111213
14 151617 181920
21 2223 24252627
28 29 3031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 1st, 2026 01:29 am
Powered by Dreamwidth Studios