Финансовое моделирование с использованием фреймворка данных PandasPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Финансовое моделирование с использованием фреймворка данных Pandas

Сообщение Гость »


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

# несколько настраиваемых формул защита GrowthRate(): защита BoundedVal() .... # некоторые операции df['EBIT'] = df['выручка'] - df['затраты'] df['NI'] = df['EBIT'] - df['налог'] - df['проценты'] df['маржа'] = df['NI'] / df['доход'] Я просматриваю все годы, чтобы рассчитать значения. Теперь я добавил в модель более 500 переменных, и расчеты также усложнились. Я думал создать отдельное определение для каждой переменной и соответствующим образом обновить основной df. Таким образом, приведенный выше код будет выглядеть так:

def EBIT(t): df['EBIT'][t] = df['выручка'][t] - df['затраты'][t] #....еще несколько операций вернуть df['EBIT'][t] защита NI(t): df['NI'][t] = EBIT(t) - df['tax'][t] - df['interests'][t] #....еще несколько операций вернуть df['NI'][t] маржа защиты (т): если check_df_is_nan(): df['маржа'][t] = NI(t) - df['затраты'][t] #....еще несколько операций вернуть df['маржа'][т] еще: вернуть df['маржа'][т] Каждая функция способна 1) вычислять результаты и обновлять df 2) возвращать значение, если она вызывается другими функциями.

Чтобы избежать избыточных вычислений (например, если Margin(t) вызывается несколько раз), было бы лучше добавить функцию «проверить, было ли val рассчитано ранее» в каждое определение.

Мой вопрос: 1) можно ли добавить оператор if в группу определений? аналогично предложению if выше. 2) У меня более 50 пользовательских настроек, поэтому основной файл становится слишком длинным. Я не могу просто переместить все определения в другой файл и импортировать все, потому что некоторые определения также ссылаются на фрейм данных в основном файле. Какие-либо предложения? Могу ли я установить df как глобальную переменную, чтобы можно было изменять и обновлять определения из других файлов?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»