• Напишем задачу на оптимизацию портфеля инвестиций. Допустим, у нас есть список акций и мы хотим определить, какое количество каждой акции нужно купить, чтобы получить наибольшую прибыль при заданных ограничениях на общий объём инвестиций, риски и прочие факторы.

Ответы 2

  • from scipy.optimize import minimize

    # функция для расчёта доходности портфеля

    def portfolio_return(x):

    total_return = 0

    for stock, weight in zip(stocks.values(), x):

    total_return += stock['return'] * weight

    return -total_return

  • from scipy.optimize import minimize

    # функция для расчёта доходности портфеля

    def portfolio_return(x):

       total_return = 0

       for stock, weight in zip(stocks.values(), x):

           total_return += stock['return'] * weight

       return -total_return

    # функция для расчёта риска портфеля

    def portfolio_risk(x):

       total_risk = 0

       for i in range(len(stocks)):

           for j in range(len(stocks)):

               if i != j:

                   stock1, stock2 = list(stocks.values())[i], list(stocks.values())[j]

                   total_risk += stock1['return'] * stock2['return'] * x[i] * x[j]

       return total_risk

    # ограничения на бюджет и риск

    constraints = [

       {'type': 'ineq', 'fun': lambda x: budget - sum(stock['price'] * weight for stock, weight in zip(stocks.values(), x))},

       {'type': 'ineq', 'fun': lambda x: risk - portfolio_risk(x))

    ]

    # начальные значения весов акций

    x0 = [1/len(stocks)] * len(stocks)

    # оптимизация

    res = minimize(portfolio_return, x0,

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years