-
Notifications
You must be signed in to change notification settings - Fork 0
/
invest20_analysis.py
43 lines (30 loc) · 1.17 KB
/
invest20_analysis.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from mfipy.yahoo_data_loader import getYahooData
from mfipy.mean_variance import mean_estimation, cov_estimation, MeanVariance
import datetime
import numpy as np
def get_return(dat):
dates = dat['Date'][1:]
ret = np.diff(dat['Close']) / dat['Close'][:-1]
new_dat = np.array(zip(dates, ret), dtype = [('Date', datetime.date),
('Return', float)])
return new_dat
stockList = ['FDX', 'UPS', 'OHI', 'HCN', 'XOM', 'CVX']
date1 = datetime.date(1990, 1, 1)
date2 = datetime.date(2012, 10, 10)
dataList = [getYahooData(ticker, date1, date2) for ticker in stockList]
cdataList = [get_return(dat) for dat in dataList]
average_return = mean_estimation([dat['Return'] for dat in cdataList], use_stein=False)
covariance = cov_estimation(cdataList, 'Date', pair_wise=True)
average_return_mod = average_return
#average_return_mod[0] *= 1.3
#average_return_mod[1] *= 1.3
#average_return_mod[2] *= 1.0
mv = MeanVariance()
mv.nameList = stockList
mv.meanList = average_return_mod
mv.covMat = covariance
mv.fixedPosition = {0: 0.378, 1:0.622}
mv.targetRisk = 0.02
#mv.run('zeroone', True)
mv.run('hedge|positive')
print mv.printResult()