바로 본론으로 들어가자면, 일단 매매 논리를 만들어보았다.
시작일로부터 계산을 하는데
함수에 인수로
capital="자본금",
start_date="거래시작일",
nup="목표상승수",
ndown="목표하락수",
k="범위로 사용할 표준편차에 곱할 수"
를 넣는다.
거래시작일로부터,
전일까지의 등락률로 계산한 정상범위, \(평균 \pm k*\sigma\) 이하의 하락이 발생한다면, 매수
전일까지의 등락률로 계산한 정상범위, \(평균 \pm k*\sigma\) 이상의 상승이 발생한다면, 매도
trade<- function(capital,start_date,nup,ndown,k){
temp<- data.frame(거래일=NA,거래유형=NA,거래주수=NA,거래단가=NA,주식수=NA,주식잔고=NA,현금잔고=NA,총자산=NA)
capital = capital
start_date= ymd(start_date)
nstock = 0
residual = capital
upcount=0
downcount=0
tradecount=1
while (start_date<=today()){
if(start_date > cjcheil %>% select(일자) %>% filter(일자<=start_date) %>% unlist() %>% first() %>% as.Date(origin="1970-01-01")){
start_date=start_date+1
} else{
mean = cjcheil %>% filter(일자<=start_date-1) %>% select(등락률) %>% apply(2,mean)
std = cjcheil %>% filter(일자<=start_date-1) %>% select(등락률) %>% apply(2,sd)
if ((cjcheil %>% filter(일자==start_date) %>% select(등락률) <= mean - k*std) & (nstock == 0)){
downcount=downcount+1
if (downcount==ndown){
nstock= residual %/% (cjcheil %>% filter(일자==start_date) %>% select(종가))
residual= residual %% (cjcheil %>% filter(일자==start_date) %>% select(종가))
temp[tradecount,]<- c(as(start_date,"character"),"매수",nstock,cjcheil %>% filter(일자==start_date) %>% select(종가),nstock,nstock*cjcheil %>% filter(일자==start_date) %>% select(종가),residual, nstock*cjcheil %>% filter(일자==start_date) %>% select(종가) + residual)
tradecount=tradecount+1
downcount=0
}
} else if ((cjcheil %>% filter(일자==start_date) %>% select(등락률) >= mean + k*std) & (nstock > 0)){
upcount=upcount+1
if (upcount==nup){
nsk=nstock
residual= residual + nstock*(cjcheil %>% filter(일자==start_date) %>% select(종가))
nstock= 0
temp[tradecount,]<-c(as(start_date,"character"),"매도",nsk,cjcheil %>% filter(일자==start_date) %>% select(종가),nstock,nstock*cjcheil %>% filter(일자==start_date) %>% select(종가), residual, nstock*cjcheil %>% filter(일자==start_date) %>% select(종가) + residual)
tradecount=tradecount+1
upcount=0
}
}
start_date = start_date + 1
}
}
return(temp)
}
다음과 같이 함수를 만들고, 2018년 10월 17일부터 시험해보았다.
> test01<- trade(5000000,20181017,1,1,1)
> test01
거래일 거래유형 거래주수 거래단가 주식수 주식잔고 현금잔고 총자산
1 2018-10-30 매수 15 327500 15 4912500 87500 5000000
2 2018-11-02 매도 15 326500 0 0 4985000 4985000
3 2018-11-16 매수 14 351000 14 4914000 71000 4985000
4 2018-12-10 매도 14 349000 0 0 4957000 4957000
5 2019-05-14 매수 17 288500 17 4904500 52500 4957000
6 2019-05-23 매도 17 285000 0 0 4897500 4897500
7 2019-07-26 매수 17 283000 17 4811000 86500 4897500
8 2019-08-30 매도 17 228500 0 0 3971000 3971000
9 2019-09-19 매수 16 237500 16 3800000 171000 3971000
10 2019-10-11 매도 16 217000 0 0 3643000 3643000
11 2019-11-11 매수 15 238000 15 3570000 73000 3643000
12 2019-11-12 매도 15 256000 0 0 3913000 3913000
13 2019-11-14 매수 15 246000 15 3690000 223000 3913000
14 2019-11-27 매도 15 250000 0 0 3973000 3973000
15 2019-12-04 매수 16 238500 16 3816000 157000 3973000
16 2019-12-10 매도 16 253500 0 0 4213000 4213000
17 2019-12-16 매수 16 248000 16 3968000 245000 4213000
18 2019-12-27 매도 16 250000 0 0 4245000 4245000
19 2020-01-02 매수 17 245000 17 4165000 80000 4245000
20 2020-01-14 매도 17 240000 0 0 4160000 4160000
21 2020-01-28 매수 17 242500 17 4122500 37500 4160000
22 2020-02-06 매도 17 247000 0 0 4236500 4236500
23 2020-02-28 매수 17 244000 17 4148000 88500 4236500
24 2020-03-04 매도 17 258500 0 0 4483000 4483000
25 2020-03-09 매수 17 255000 17 4335000 148000 4483000
26 2020-03-20 매도 17 188000 0 0 3344000 3344000
27 2020-03-23 매수 19 172500 19 3277500 66500 3344000
28 2020-03-24 매도 19 191000 0 0 3695500 3695500
29 2020-04-10 매수 15 231500 15 3472500 223000 3695500
30 2020-04-14 매도 15 236000 0 0 3763000 3763000
31 2020-05-08 매수 13 277000 13 3601000 162000 3763000
32 2020-05-12 매도 13 287500 0 0 3899500 3899500
33 2020-05-19 매수 13 294500 13 3828500 71000 3899500
34 2020-06-09 매도 13 305500 0 0 4042500 4042500
35 2020-06-11 매수 12 320000 12 3840000 202500 4042500
36 2020-06-12 매도 12 328500 0 0 4144500 4144500
37 2020-06-15 매수 13 316500 13 4114500 30000 4144500
38 2020-06-16 매도 13 336500 0 0 4404500 4404500
39 2020-06-29 매수 13 328500 13 4270500 134000 4404500
40 2020-07-01 매도 13 339000 0 0 4541000 4541000
41 2020-07-15 매수 11 392500 11 4317500 223500 4541000
42 2020-07-31 매도 11 386000 0 0 4469500 4469500
43 2020-08-12 매수 10 414500 10 4145000 324500 4469500
44 2020-08-25 매도 10 416500 0 0 4489500 4489500
45 2020-09-09 매수 11 375500 11 4130500 359000 4489500
46 2020-09-10 매도 11 401500 0 0 4775500 4775500
47 2020-09-14 매수 12 392000 12 4704000 71500 4775500
48 2020-10-06 매도 12 410500 0 0 4997500 4997500
49 2020-10-13 매수 12 398000 12 4776000 221500 4997500
50 2020-11-04 매도 12 387000 0 0 4865500 4865500
51 2020-11-10 매수 12 379500 12 4554000 311500 4865500
52 2020-11-18 매도 12 374500 0 0 4805500 4805500
53 2021-01-06 매수 11 403500 11 4438500 367000 4805500
54 2021-01-08 매도 11 432500 0 0 5124500 5124500
55 2021-01-15 매수 11 437000 11 4807000 317500 5124500
56 2021-01-19 매도 11 437000 0 0 5124500 5124500
57 2021-01-28 매수 11 450000 11 4950000 174500 5124500
58 2021-02-08 매도 11 454500 0 0 5174000 5174000
59 2021-02-09 매수 12 431000 12 5172000 2000 5174000
60 2021-03-12 매도 12 407500 0 0 4892000 4892000
61 2021-05-20 매수 11 444500 11 4889500 2500 4892000
62 2021-05-24 매도 11 451500 0 0 4969000 4969000
63 2021-07-30 매수 10 468000 10 4680000 289000 4969000
64 2021-08-24 매도 10 443000 0 0 4719000 4719000
65 2021-09-28 매수 11 416500 11 4581500 137500 4719000
손해봤다. 3년 매매해서 28만1천원 손해. 코로나 때문인 거 같기도 하고.
인수를 바꿔가면서 몇 번 더 돌려봤는데 금액적인 차이는 거의 나지 않았다.
코로나 이후로 다시 진행해보았다.
> test03<- trade(5000000,20201017,1,1,1)
> test03
거래일 거래유형 거래주수 거래단가 주식수 주식잔고 현금잔고 총자산
1 2020-10-26 매수 13 371000 13 4823000 177000 5000000
2 2020-11-04 매도 13 387000 0 0 5208000 5208000
3 2020-11-10 매수 13 379500 13 4933500 274500 5208000
4 2020-11-18 매도 13 374500 0 0 5143000 5143000
5 2021-01-06 매수 12 403500 12 4842000 301000 5143000
6 2021-01-08 매도 12 432500 0 0 5491000 5491000
7 2021-01-15 매수 12 437000 12 5244000 247000 5491000
8 2021-01-19 매도 12 437000 0 0 5491000 5491000
9 2021-01-28 매수 12 450000 12 5400000 91000 5491000
10 2021-02-08 매도 12 454500 0 0 5545000 5545000
11 2021-02-09 매수 12 431000 12 5172000 373000 5545000
12 2021-03-12 매도 12 407500 0 0 5263000 5263000
13 2021-05-20 매수 11 444500 11 4889500 373500 5263000
14 2021-05-24 매도 11 451500 0 0 5340000 5340000
15 2021-07-30 매수 11 468000 11 5148000 192000 5340000
16 2021-08-24 매도 11 443000 0 0 5065000 5065000
17 2021-09-28 매수 12 416500 12 4998000 67000 5065000
최근들어 하락한 것이 그대로 반영되었다.
만약 18년 10월 17일부터 그대로 보유했다면?
> paste(((5000000%/%(cjcheil %>% filter(일자==ymd(20181017)) %>% select(종가))*(cjcheil %>% filter(일자==ymd(20211001)) %>% select(종가)) + 5000000%%(cjcheil %>% filter(일자==ymd(20181017)) %>% select(종가)))-5000000)/5000000*100,"%",sep="")
[1] "20.4%"
수익률이 20.4%이다.
장투가 답인가?
아니, 나의 로직이 부족한 것이다.
다음에 조금 더 정교한 로직으로 돌아오겠다.
반응형
'코딩' 카테고리의 다른 글
제일제당, 존버가 답이었을까? - 5편 (0) | 2021.10.23 |
---|---|
제일제당, 존버가 답이었을까? -4편 (0) | 2021.10.20 |
제일제당, 존버가 답이었을까? - 3편 (0) | 2021.10.10 |
제일제당, 존버가 답이었을까? - 1편 (0) | 2021.10.08 |
제일제당, 존버가 답이었을까? - 0편 (0) | 2021.10.08 |