주식시장에 '주기(Cycle)'이 있을까요?
미국 주식을 역사적인 사건과 연관하여 분석하는 '제프리 허시'는 시장은 역사적 사건과 계절적 영향에 따라 '주기(Cycle)'을 형성한다고 얘기합니다. 그리고, 이 주기에 따라 투자하면 높은 수익률을 얻는다고 주장합니다. <주식투자 최적의 타이밍을 잡는 작은책>은 그가 분석한 50년간의 미국시장의 데이터에서 얻은 주요 '주기(Cycle)'에 대해서 정리한 책입니다.
'밀물 때는 모든 배가 떠오른다'
강세장에서는 많은 종목이 상승하여 대부분의 투자자의 계좌는 수익으로 넘쳐(^^;;) 흐릅니다. 그런데, 반대로 얘기하자면, 썰물 때는 모든 배가 내려앉습니다. 약세장에서는 대부분의 투자자는 손해를 보게 됩니다. 그렇다면 수익률에 가장 큰 영향을 주는 것은 시장의 흐름일 것입니다. 다가오는 강세장을 알고 매수하고, 약세장을 예측하여 매도할 수 있다면 수익은 보장될 것입니다. 주식 천재는 다름아닌 상승하는 '주식시장'이므로 시장이 사라는 신호(강세장 신호)에서 사고, 팔라는 신호(약세장 신호)에서 팔 수 있다면 최고의 수익이 보장될 것입니다.
그럼, 강세장과 약세장을 미리 알 수 있을까요?
저자가 소개한 몇 가지 사례를 소개드립니다.
1. 전쟁이 끝나면 상승장이 온다.
2. 대통령 선거 전해(미국 대통령 임기 3년차)는 '경기 부양' 정책으로 평균 50% 상승한다.
3. 수익률이 높은 6개월은 11월 ~ 4월 이다.( ?? 10월 혹은 11월에 매수, 4월 혹은 5월에 매도... ^^; )
4. 매수하기 좋은 달은 8월, 9월, 10월 이었다. ( 저가에 매수... ^^;)
5. 1월에 오르면 한해가 오른다. (흠.... 이말은 일종의 '도박사의 오류' 가 아닐까?... )
6. 금요일에는 팔지 마라. ( 금요일에는 하락세가 강하다 ??? )
위의 주장을 한국 주식시장에도 적용할 수 있는지 (짧지만~~) 2010~2018년 코스피, 코스닥 지수 데이터를 살펴보겠습니다. 1번(전쟁 관련)과 2번(미국 대통령 선거)을 제외하고 3번 ~ 6번에 대해서는 비교가 가능할 것이라 생각됩니다.
3. 11월 ~ 4월의 수익률이 좋은 달이다.
2010년 1월부터 2018년 11월까지 월별 상승한 횟수를 확인했습니다.
3월, 7월, 9월이 7번으로 가장 많은 상승 횟수를 보였습니다. 11월~4월 상승횟수는 높다고 하기는 어려운 것 같습니다.
4. 매수하기 좋은 달은 8월, 9월, 10월이다.
월별 주가를 박스그래프(boxplot)으로 살펴보겠습니다.
중앙값은 8월, 9월, 10월이 낮다고 볼 수는 없을 것 같습니다. 그리고 최소값의 경우는 2월과 5월이 낮아보입니다. 최고값은 8월, 9월이 다소 낮아보이지만, 큰 차이는 없는 것 같습니다.
5. 1월이 오르면 한해가 오른다
2010년부터 1월의 변화와 한해의 변화를 확인하겠습니다.
5번은 같은 방향이고, 4번은 다른 방향입니다. 같은 방향으로 움직인 경우가 1번 더 많기는 하지만 큰 의미는 없는 것 같습니다. 그래프로 추세를 확인해볼까요?
1월 추세와 한해 추세가 연관성이 있어 보이지 않습니다.
6. 금요일에는 팔지마라 (금요일은 하락한다 ==> 주가가 낮게 형성된다??)
요일별 주가를 박스그래프로 확인해 보겠습니다.
중앙값, 박스의 크기(25% ~ 75% 데이터 위치), 그리고 최고값/최소값에서 요일별 차이는 보이지 않습니다.
결론적으로 미국시장의 주기에 기반한 이 연구를 한국증시에 적용하는 것은 좋지 않을 것 같습니다.
월가의 유명 분석가 리처드 번스타인이 <소음과 투자>에서 설파한 확실한 장기 예측에 기반한 투자가 현실적인 것 같습니다.
############################################################
***************** R Script *****************
################### KOSPI 지수 download
library(quantmod)
library(dplyr)
library(ggplot2)
my_symbol <- "^KS11"
src_loc <- "yahoo"
from_day <-"2010-01-01"
to_day <- "2018-11-20"
output <- getSymbols(Symbols=my_symbol, src = src_loc, from = from_day, to = to_day, auto.assign = FALSE)
### Nov ~ April Monthly
### 달별 상승 횟수
output_month <- to.monthly(output)
up_yearmons <- index( output_month[output_month$output.Close - output_month$output.Open > 0] )
up_months <- format(up_yearmons, "%m")
df_up_months <- data.frame(up_months)
df_up_months %>% ggplot(aes(x=up_months)) + geom_bar(color="blue", fill="blue")
table(up_months)
################# 월별 종가 분포
output.close <- output$KS11.Close
output.date <- index(output)
output.month <- format(output.date,"%m")
output.year <- format(output.date, "%Y")
output_day_close <- data.frame(date=output.date, month = output.month, year = output.year, kospi = output.close)
output_day_close %>% ggplot(aes(x = month, y=KS11.Close, color=year)) +
geom_point() +
geom_jitter() +
geom_boxplot(aes(color="black"), alpha=0.5)
####################### 1월 변화와 한해 변화 관계
output_year <- to.yearly(output)
year <- format(index(output_year), "%Y")
output_jan <- output_month[format(index(output_month),"%m") == "01"]
output_jan_year <- data.frame(year, jan_open = output_jan$output.Open, jan_close = output_jan$output.Close,
year_open = output_year$output.Open, year_close=output_year$output.Close)
df_jan_year_change <- output_jan_year %>% mutate(jan_change = output.Close - output.Open, year_change = output.Close.1 - output.Open.1)
library(xlsx)
write.xlsx(df_jan_year_change, file="Jan_Year_change.xlsx", col.names = TRUE, row.names = TRUE, append = FALSE,
showNA = TRUE)
library(reshape)
df_jan_year_change <- df_jan_year_change %>% melt(id.vars = c("year"), measure.vars=c("jan_change", "year_change"))
df_jan_year_change %>% ggplot(aes(x=year, y=value, color=variable)) +
geom_point(size=3) +
geom_line(aes(x=as.numeric(year)))계
################### 요일별 주가
weekdays <- weekdays(index(output))
weekday_close <- data.frame(weekdays, output$KS11.Close)
weekday_close %>% ggplot(aes(x=weekdays, y=KS11.Close, color=weekdays)) +
geom_point() +
geom_jitter() +
geom_boxplot(fill="skyblue", alpha=0.4)