서론: 방향의 속도를 재는 지표

선형회귀 기울기는 최근 n일 종가에 직선 하나를 최소제곱으로 맞추고, 그 직선이 하루에 몇 원씩 오르내리는지를 읽는 지표다. 이동평균이 가격이 어디쯤 있는지 알려 준다면 이 값은 어느 쪽으로 얼마나 빠르게 가고 있는지를 알려 준다. 앞서 쓴 선형회귀 곡선 편은 회귀선의 끝점 값을 가격과 비교했다. 이번에는 같은 직선에서 기울기만 꺼내 쓴다.

SK하이닉스의 최근 두 달은 이 지표를 시험하기에 까다로운 구간이다. 7월 22일 고가 2,006,000원에서 7월 29일 저가 1,246,000원까지 -37.89% 빠졌고, 7월 31일에는 하루에 +29.95% 튀어 올랐다. 그 뒤로는 종가가 1,420,000원(8월 10일)과 1,868,000원(9월 21일) 사이에서 오르내렸다. 큰 추세가 한 번 꺾이고 나서 옆으로 기는 구간이라, 기울기가 부호를 바꿀 때마다 그 신호가 추세 전환인지 잡음인지 가려볼 수 있다.

이 글의 데이터 범위
종목      SK하이닉스 (KRX 000660)
구간      2026-07-20 ~ 2026-09-30, 50거래일
출처      stockanalysis.com 일봉 (서로 다른 두 요청에서 겹치는 행 일치 확인)
--------------------------------------------------
구간 고가  2,006,000원 (7월 22일)
구간 저가  1,246,000원 (7월 29일)
마지막 종가 1,776,000원 (9월 30일)
고가→저가  -37.89%
저가→마지막 종가 +42.54%

이 글은 일봉 데이터를 직접 계산해 본 학습 기록이다. 투자 권유가 아니다.

데이터 한계를 먼저 적어 둔다. 최근 60거래일 이상을 받으려 했지만 확보한 것은 50거래일이다. 14일 창의 기울기는 첫 13일이 예열 구간이라 유효한 값이 37개뿐이고, 첫 값은 8월 6일에 나온다. 7월 말 폭락 한가운데는 이 지표로 읽을 수 없다. 또 출처가 표기한 8월 28일 등락률은 -4.43%인데 종가 두 개로 다시 계산하면 -4.45%다. 이 글의 모든 등락률은 종가에서 직접 계산한 값을 쓴다.

SK하이닉스 일봉과 거래량

본론: 계산, 실측, 검증

정의와 계산식

n일 창의 종가 y를 시간 x = 0, 1, …, n-1 에 대해 OLS(최소제곱) 직선으로 맞추면 기울기는 아래 식이 된다. 라이브러리 없이 numpy 배열 연산으로 직접 구현했다. 원 단위 기울기는 가격 수준이 높을수록 커지므로, 종가로 나눈 정규화 값(%/일)도 함께 쓴다.

선형회귀 기울기 계산식
x̄      = (n - 1) / 2
ȳ      = (y_0 + y_1 + ... + y_(n-1)) / n
slope  = Σ (x_i - x̄)(y_i - ȳ) / Σ (x_i - x̄)^2
slope% = slope / 오늘 종가 × 100
--------------------------------------------------
n = 14  Σ (x_i - x̄)^2 = 227.5  (분모, 창 길이만으로 고정)
유효값  50 - (n - 1) = 37개 (첫 값 8월 6일)

파라미터는 14일을 기본으로 골랐다. 약 3주 거래일이라 하루짜리 충격이 직선에 묻히지 않으면서 추세 전환에는 너무 늦지 않는 길이라고 보았고, 14일을 기본값으로 쓰는 지표가 많아 비교가 쉽다는 이유도 있다. 이 선택이 결과를 얼마나 좌우하는지는 아래 민감도에서 7일, 21일과 비교한다.

실제 값 읽기

14일 기울기는 8월 6일 -26,202원/일(-1.75%)에서 시작해 8월 7일 -29,495원/일(-2.07%)로 바닥을 찍었다. 가격 저점은 7월 30일 종가 1,322,000원이었으니 기울기의 바닥은 가격보다 5거래일 늦다. 창 안에 폭락 구간이 계속 들어 있었기 때문이다. 기울기가 0을 넘어 양수가 된 날은 8월 14일(+3,431원/일, +0.21%)이고, 이때 종가 1,645,000원은 7월 30일 종가보다 이미 +24.43% 올라 있었다. 신호는 반등이 상당히 진행된 뒤에 켜졌다.

그 뒤 기울기는 8월 27일 +24,305원/일(+1.40%)로 정점을 찍고 식어서 9월 3일 +536원/일, 9월 4일 -259원/일(-0.02%)까지 내려왔다. 8월 27일 종가 1,730,000원에서 9월 3일 종가 1,596,000원까지 -7.75% 밀린 시기와 겹친다.

종가와 14일 선형회귀 기울기

신호를 전부 나열한다

신호는 기울기의 부호가 바뀌는 날로 정의했다. 맞았는지는 신호일 종가 대비 5거래일 뒤 종가의 방향이 신호 방향과 같은지로 본다. 14일 기울기에서 나온 전환은 네 번이고, 마지막 하나는 아직 5거래일이 지나지 않아 판정할 수 없다.

14일 기울기 부호 전환 (5거래일 뒤 판정)
날짜    방향  기울기(원/일)  종가        5일 뒤      판정
--------------------------------------------------
8/14    상향  +3,431       1,645,000   +1.58%      맞음
9/4     하향  -259         1,647,000   +10.02%     빗나감
9/7     상향  +3,382       1,783,000   -4.82%      빗나감
9/30    하향  -132         1,776,000   (미결)      판정 불가

판정이 난 세 건 중 맞은 것은 8월 14일 하나다. 그마저 5거래일 뒤 수익률이 +1.58%라 겨우 방향만 맞았다. 9월 4일의 하향 신호는 5거래일 뒤 +10.02%로 정반대였다. 기울기가 -259원/일로 아주 얕게 음수가 된 날이었고, 다음 거래일인 9월 7일에 하루 +8.26% 상승이 나오면서 기울기가 다시 +3,382원/일로 올라갔다. 이 상향 신호는 5거래일 뒤 -4.82%로 또 빗나갔다. 9월 4일부터 9월 7일 사이 기울기가 0 근처에서 부호만 두 번 뒤집힌 것이 두 번의 오판을 만들었다.

날마다 보면 어떤가

부호 전환만 보지 않고 기울기의 부호로 다음 거래일을 맞혀 보면 이렇다. 기울기가 양수였던 29일 중 다음 날 올랐던 날은 16일이고 다음 날 평균 등락률은 +0.07%였다. 거의 동전 던지기다. 기울기가 음수였던 7일은 다음 날 5일이 올랐고 평균이 +2.62%였다. 음수 기울기가 하락을 예고한다면 기대와 반대다. 표본이 7개뿐이고 그중 6개가 8월 6일부터 13일 사이 반등 초입에 몰려 있어서, 이 숫자로 일반론을 끌어내기는 어렵다. 그래도 이 구간에서 부호가 방향을 앞서 알려 주지 않았다는 사실은 남는다.

파라미터를 바꾸면

창을 7일로 줄이면 신호가 폭증한다. 44개의 유효값에서 부호 전환이 10번 나왔고 그중 판정 가능한 9건에서 방향이 맞은 것은 3건이었다. 8월 5일 상향(-9.83%), 8월 7일 하향(+15.68%), 9월 2일 하향(+15.07%) 같은 큰 오판이 섞여 있다. 맞은 3건은 8월 14일(+1.58%), 8월 28일 하향(-0.36%), 9월 1일 상향(+5.91%)인데 8월 28일의 -0.36%는 방향이 맞았다고 하기도 민망한 크기다.

창을 21일로 늘리면 반대로 신호가 거의 사라진다. 유효값 30개에서 전환이 8월 24일 상향(+1,514원/일) 한 번뿐이고, 5거래일 뒤 +0.18%였다. 9월 30일 현재 21일 기울기는 여전히 +7,748원/일(+0.44%)이라 14일 값이 0에 닿은 것과 부호가 엇갈린다. 같은 날 7일 기울기는 -18,607원/일(-1.05%)이다. 창 길이에 따라 같은 날 세 값이 다른 말을 한다.

창 길이별 정규화 기울기

기울기 부호 전환 신호의 5거래일 뒤 수익률

이 지표를 봇 게이트에 넣을 것인가

부호만 쓰는 게이트로는 넣지 않는다. 9월 4일과 7일 사이처럼 기울기가 0 근처에서 흔들릴 때 신호가 연달아 뒤집히기 때문이다. 정규화 기울기가 ±0.10%/일 안쪽이면 중립으로 보는 중립대를 두면 사정이 달라진다. 14일 기울기 37개 중 6일(8월 20일, 9월 3일, 9월 4일, 9월 8일, 9월 29일, 9월 30일)이 이 띠 안에 들어간다. 중립대를 벗어나 부호가 바뀐 것만 신호로 인정하면 8월 14일 하나만 남고, 9월 4일 오판은 걸러진다. 8월 14일에 올라탔다면 9월 30일 종가 1,776,000원까지 +7.96%다.

다만 이것은 같은 50거래일 데이터를 보고 띠 폭을 고른 사후 처방이다. 중립대 0.10%는 이 구간을 본 뒤에 고른 값이라 표본 밖에서 같은 효과를 낸다고 보장할 수 없다. 봇에 넣는다면 가격 신호를 대체하지 않고, 다른 신호가 낸 진입을 허용할지 가르는 보조 필터로만 쓰는 쪽이 맞다고 본다.

결론: 남는 것과 아직 모르는 것

이번 구간에서 챙길 것은 두 가지다. 하나는 기울기가 가격보다 느리다는 점이다. 반등이 +24.43% 진행된 뒤에야 양수로 바뀌었고, 가격이 바닥을 찍은 뒤 5거래일이 지나서야 기울기도 바닥을 찍었다. 다른 하나는 0 근처의 부호 전환이 신호가 못 된다는 점이다. 14일 신호 중 9월 4일과 7일 두 건은 기울기가 0에서 3,400원/일도 떨어지지 않은 자리에서 나왔고 둘 다 틀렸다.

마지막 기울기는 -132원/일이다. 9월 9일부터 30일까지 14일 창의 회귀 직선은 1,797,143원에서 1,795,429원으로 사실상 수평이고, 이 구간 종가는 1,690,000원과 1,868,000원 사이를 왔다 갔다 했다. 직선의 설명력(결정계수)은 0.0001 정도라 직선이라는 모형이 이 구간 가격을 거의 설명하지 못한다. 9월 30일의 하향 신호를 얼마나 믿어야 하는지는 이 모형이 맞는 구간인지부터 따져야 해서, 5거래일 뒤 종가를 보고 판정표에 한 줄을 더 적을 생각이다. 21일 기울기가 여전히 양수인데 14일이 0 아래로 내려간 이 어긋남이 어느 쪽으로 풀리는지가 다음 숙제다.

이 글은 학습·기록 목적이며 특정 종목의 매수·매도 권유가 아니다. 모든 투자 판단과 손익의 책임은 본인에게 있다.

약어 풀이

* 이 글에 나온 영어 약어를 풀어 둔다.

  • OLS (Ordinary Least Squares): 최소제곱법. 관측값과 직선 사이 거리의 제곱합이 가장 작도록 직선을 맞추는 방법.
  • KRX (Korea Exchange): 한국거래소. 코스피와 코스닥을 운영한다.