본문 바로가기

코딩

제일제당, 존버가 답이었을까? -2편

바로 본론으로 들어가자면, 일단 매매 논리를 만들어보았다.

시작일로부터 계산을 하는데

함수에 인수로

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%이다.

장투가 답인가?

아니, 나의 로직이 부족한 것이다.

 

다음에 조금 더 정교한 로직으로 돌아오겠다.

반응형