로드 중...
검색 중...
일치하는 항목 없음
pickstock.py
1
6
7if__name__ =="__main__":
8
9 # [1]
10 가져오기os
11 가져오기인증서
12os.environ['SSL_CERT_FILE'] = certifi.where()
13 from슬롯 사이트magic가져오기GamsInteractive
14슬롯 사이트 = GamsInteractive()
15
16
21
22 # [2]
23 가져오기판다aspd
24url="https://github.com/daveh19/pydataberlin2017/raw/master/notebooks/dowjones2016.csv"
25price_data=pd.read_csv(url)
26
27 # [3]
28m = 슬롯 사이트exchange_container
29날짜 = m.addSet('날짜', 설명='거래일')
30기호 = m.addSet('기호', 설명='주식 기호')
31가격 = m.addParameter('가격', [날짜, 기호], domain_forwarding=, 기록=가격_데이터, 설명='날짜의 주식 가격')
32d = m.addAlias('d', 날짜)
33s = m.addAlias(', 기호)
34
35
38
39 # [4]
40avgprice = m.addParameter('평균 가격', [기호], 설명='주가의 평균 가격')
41슬롯 사이트슬롯 사이트('avgprice(s) = 합계(d, 가격(d,s))/카드(d);')
42인쇄(avgprice.records.head())
43
44
47
48 # [5]
49중량 = m.addParameter('무게', [기호], 설명='재고 중량')
50슬롯 사이트슬롯 사이트('무게(기호) = 평균 가격(기호)/합계(들, 평균 가격);')
51인쇄(weight.records.head())
52
53
56
57 # [6]
58기여 = m.addParameter('공헌', [날짜, 기호])
59슬롯 사이트슬롯 사이트('기여금(d,s) = 무게(들)*가격(d,s);')
60인쇄(contribution.records.head())
61
62
65
66 # [7]
67색인 = m.addParameter('색인', [날짜], 설명='다우존스 지수')
68슬롯 사이트슬롯 사이트('지수(d) = 합계(s, 기여도(d,s));')
69인쇄(index.records.head())
70
71
74
75 # [8] - [9] - 건너뛰었습니다
76
77
80
81 # [10]
82trainingdays = m.addParameter('훈련일', 레코드 = 100)
83maxstock = m.addParameter('맥스스톡', 레코드 = 3, 설명='선택할 최대 주식 수')
84ds = m.addSet('ds', [날짜], 설명='선택한 날짜')
85ds.setRecords(date.records['유니'][:100])
86
87
90
91 # [11]
92p = m.addVariable('p', '바이너리', [기호], 설명 ='재고가 포함되어 있나요?')
93w = m.addVariable('w', '긍정적', [기호], 설명 ='포트폴리오의 어떤 부분')
94slpos = m.addVariable('slpos', '긍정적', [날짜], 설명 ='긍정적인 여유')
95slneg = m.addVariable('slneg', '긍정적', [날짜], 설명 ='부정적 여유')
96obj = m.addVariable('obj', '무료', 설명 ='목적')
97
98
108
109 # [12]
110슬롯 사이트슬롯 사이트('''
111슬롯 사이트 deffit(date) '다우존스 지수에 적합';
112deffit(ds).. sum(s, 가격(ds,s)*w(s)) =e= 지수(ds) + slpos(ds) - slneg(ds);
113
114슬롯 사이트 defpick(symbol) '선택한 경우에만 재고를 사용할 수 있습니다';
115defpick(s).. w(s) =l= p(s);
116
117슬롯 사이트 defnumstock '몇 가지 주식이 허용됨';
118defnumstock.. sum(s, p(s)) =l= maxstock;
119
120슬롯 사이트 defobj '색인의 절대 위반(L1 표준)';
121defobj..obj =e= sum(ds, slpos(ds) + slneg(ds));
122
123모델 pickStock /all/;''')
124
125
128
129 # [13]
130ds.setRecords(date.records['유니'][:100])
131maxstock.setRecords(3)
132
133 # [14]
134슬롯 사이트슬롯 사이트('옵션 optCR=0.01, resLim=6; mip를 사용하여 pickStock min obj를 해결합니다.')
135
136
139
140 # [15]
141펀드 = m.addParameter('펀드', [날짜], 설명='인덱스 펀드 보고서 매개변수')
142슬롯 사이트슬롯 사이트('펀드(d) = 합계(s, 가격(d, s)*w.l(s));')
143오류 = m.addParameter('오류', [날짜], 설명='절대 오류')
144슬롯 사이트슬롯 사이트('오류(d) = abs(index(d)-fund(d));')
145
146
149
150 # [16] - [17] - 건너뛰었습니다
151
152 # [18]
153슬롯 사이트gams_cleanup(폐쇄=)