Предмет:
ИнформатикаАвтор:
maximmerrittfrom 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
Автор:
martarhodesfrom 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,
Автор:
zacharyvtboДобавить свой ответ
Предмет:
ЭкономикаАвтор:
elenahunterОтветов:
Смотреть