코스피, 코스닥, 코스피200 5일 평균 대비 현재가

2018-11-03 • quant코스피, 코스닥, 코스피200 • 2 min read

주식 투자를 함에 있어 시장 상황을 파악하는 것은 매우 중요한 일입니다. 코스피, 코스닥, 코스피200 등의 지수가 안좋을 때는 매도의 관점에서 리스크를 관리해야 할 것입니다.

이 포스트에서는 지수의 5일 평균선에서의 현재 지수의 위치를 확인하는 간단한 파이썬 코드를 공유합니다. 데이터는 키움증권 Open API를 통해 수집했습니다. 물론 어떠한 소스에서 데이터를 획득해도 상관 없습니다.

5일 간의 코스피 데이터가 다음과 같을 때, 최근 5일 종가(현재가)의 평균 대비 당일 현재가의 위치를 확인해 보겠습니다.

[{'code': '001',
  'date': '20181102',
  'open': 2046.61,
  'high': 2096.63,
  'low': 2044.94,
  'close': 2096.0,
  'volume': 371978.0},
 {'code': '001',
  'date': '20181101',
  'open': 2035.11,
  'high': 2054.22,
  'low': 2023.43,
  'close': 2024.46,
  'volume': 343813.0},
 {'code': '001',
  'date': '20181031',
  'open': 2022.84,
  'high': 2030.5,
  'low': 2006.63,
  'close': 2029.69,
  'volume': 373027.0},
 {'code': '001',
  'date': '20181030',
  'open': 1985.95,
  'high': 2028.84,
  'low': 1985.95,
  'close': 2014.69,
  'volume': 441585.0},
 {'code': '001',
  'date': '20181029',
  'open': 2026.68,
  'high': 2045.76,
  'low': 1993.77,
  'close': 1996.05,
  'volume': 427304.0}]

우선 20181029에서 20181102까지 5일 동안의 코스피 평균은 약 2032.18 입니다. 그리고 20181102의 종가는 2096.0 입니다. 5일 평균과의 비율로 보면 약 1.03으로 1보다는 커서 매수를 해볼만한 상황이라 볼 수 있습니다.

이런 단순한 지표로 투자를 결정할 수는 없지만 돌다리도 두들겨보고 건넌다는 생각으로, 시장 지수의 5일 평균 대비 현재가가 1 미만인 경우에는 관망하는 것이 좋습니다.

아래는 이 값을 구하는 매우 간단한 파이썬 코드 입니다.

import numpy as np
data = [{'code': '001', 'date': '20181102', 'open': 204661.0, 'high': 209663.0, 'low': 204494.0, 'close': 209600.0, 'volume': 371978.0}, {'code': '001', 'date': '20181101', 'open': 203511.0, 'high': 205422.0, 'low': 202343.0, 'close': 202446.0, 'volume': 343813.0}, {'code': '001', 'date': '20181031', 'open': 202284.0, 'high': 203050.0, 'low': 200663.0, 'close': 202969.0, 'volume': 373027.0}, {'code': '001', 'date': '20181030', 'open': 198595.0, 'high': 202884.0, 'low': 198595.0, 'close': 201469.0, 'volume': 441585.0}, {'code': '001', 'date': '20181029', 'open': 202668.0, 'high': 204576.0, 'low': 199377.0, 'close': 199605.0, 'volume': 427304.0}]
for d in data:
    d['open'] = d.get('open') / 100
    d['high'] = d.get('high') / 100
    d['low'] = d.get('low') / 100
    d['close'] = d.get('close') / 100
m = np.mean(list(map(lambda d: d.get('close'), data)))
print(m)