@一茬旺韭菜
```
def __fun_get_portfolio_dailyreturn(ratio, freq, lag):
__portfolio_dailyreturn = []
for stock in ratio.keys():
if ratio[stock] != 0:
__dailyReturns = __fun_getdailyreturn(stock, freq, lag)
__tmplist = []
for i in range(len(__dailyReturns)):
__tmplist.append(__dailyReturns[i] * ratio[stock])
if __portfolio_dailyreturn:
__tmplistB = []
for i in range(len(__portfolio_dailyreturn)):
__tmplistB.append(__portfolio_dailyreturn[i]+__tmplist[i])
__portfolio_dailyreturn = __tmplistB
else:
__portfolio_dailyreturn = __tmplist
return __portfolio_dailyreturn
def __fun_get_portfolio_ES(ratio, freq, lag, confidencelevel):
if confidencelevel == 1.96:
a = (1 - 0.95)
elif confidencelevel == 2.06:
a = (1 - 0.96)
elif confidencelevel == 2.18:
a = (1 - 0.97)
elif confidencelevel == 2.34:
a = (1 - 0.98)
elif confidencelevel == 2.58:
a = (1 - 0.99)
else:
a = (1 - 0.95)
dailyReturns = __fun_get_portfolio_dailyreturn(ratio, freq, lag)
dailyReturns_sort = sorted(dailyReturns)
count = 0
sum_value = 0
for i in range(len(dailyReturns_sort)):
if i < (lag * a):
sum_value += dailyReturns_sort[i]
count += 1
if count == 0:
ES = 0
else:
ES = -(sum_value / (lag * a))
return ES
```
调用:
portfolio_ES = __fun_get_portfolio_ES(equity_ratio, '1d', 180, 2.58)
equity_ratio = {'股票':持仓比例}
类似这样子 {'510500.XSHG': 0.008, '513500.XSHG': 0.054, '510300.XSHG': 0.0, '600011.XSHG': 0.052}
2016-10-17