아나콘다에서 pandas를 설치 후 파이썬을 실행하면 No module named 'numpy.core._multiarray_umath' 라고 에러가 발생하는 경우가 있습니다.

위 메시지는 파이썬 버전보다 numpy 버전이 상위 버전이라서 오류가 발생하는 것입니다. 

현재(2020년12월1일) 아나콘다에서 파이썬 3.7 버전을 설치 후 pandas를 설치하면 문제가 생깁니다.

아나콘다에서 파이썬 3.7 버전을 설치하면 pandas를 따로 설치해줘야 하는데 python 3.8 이상에서는 기본으로 함께 설치됩니다. 

아나콘다에서 pandas를 사용하고자 한다면 파이썬 3.8 이상을 설치하시기 바랍니다.

아나콘다 32비트 가상환경에서 python 버전을 변경하기 위해 Python interpreter에 들어가 python 버전을 변경하였다. 

그리고 파이참에서 파이썬을 실행하면 '%1은(는) 올바른 Win32 응용 프로그램이 아닙니다.'라고 에러 메시지가 나오면서 실행이 안 된다.

결론부터 얘기하면 python 버전이 32비트에서 64비트로 변경되서 그런 것이다. Python interpreter에서 버전을 변경하면 32비트 interpreter였더라도 64비트 파이썬으로 변경되는 현상이 발생한다.

 

파이썬 비트를 확인하려면 다음 링크에서 확인해보자. 


2020/11/11 - [금융공학/키움API연동] - [Python] 아나콘다 32비트 가상환경 설정 후 파이썬 비트 확인 방법

 

[Python] 아나콘다 32비트 가상환경 설정 후 파이썬 비트 확인 방법

아나콘다에서 32비트로 가상환경을 만들었는데 32비트로 잘 만들어졌는지 어떻게 알 수 있을까? 우선 아나콘다 프롬프트로 들어간다. 프롬프트 창에서 activate py35_32bit 입력하여 32비트 가상환경

grand-unified-engine.tistory.com

 

필자의 경우 기존에 설치되어 있던 PyQt5에서 오류가 발생했는데 PyQt5를 32비트환경에서 설치했기 때문에 64비트에서 PyQt5를 실행하려니 오류가 발생하는 것이다.

 

결론은 32비트 가상환경에서 Python 버전을 변경하려고 할 때 Python interpreter에서 변경하면 안 된다.

 

64비트로 바뀐 환경을 삭제하고 다시 32비트 가상환경을 설정해보자.

 

기존 환경 삭제하기 위해 Anaconda Prompt로 들어가 conda remove --all -n py38_32bit 를 입력한다.

 

다시 32비트 가상환경을 설정하는 방법은 다음 링크를 참조하자.


 

2020/02/27 - [금융공학/키움API연동] - [Python] 64비트 아나콘다 설치 후 32비트 가상환경 추가 방법

 

[Python] 64비트 아나콘다 설치 후 32비트 가상환경 추가 방법

다음과 같이 파이썬으로 키움증권 Open API 에 로그인하려고 하는데 아무 동작을 하지 않는다. self.kiwoom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1") self.kiwoom.dynamicCall("CommConnect()") 원인을 찾아보니..

grand-unified-engine.tistory.com

 

평균 회귀 전략 중 하나인 볼린저 밴드를 파이썬으로 구현해보자.

 

볼린저 밴드는 3개 선으로 구성되는데 추세를 판단할 수 있는 중심선, 상단선과 하단선의 표준편차 밴드로 구성된다. 

일반적인 볼린저 밴드 공식은 다음과 같다.

  • 상단 볼린저 밴드 = 중간 볼린저 밴드 + (표준편차 X 2)
  • 중간 볼린저 밴드 = 종가의 20 이동평균
  • 하단 볼린저 밴드 = 중간 볼린저 밴드 - (표준편차 X 2)
import FinanceDataReader as fdr
df = fdr.DataReader("057030", '2020') # YBM넷 2020년~현재
df = df[['Close']]
df['MA20'] = df['Close'].rolling(window=20).mean() # 중간 볼린저 밴드
df['stddev'] = df['Close'].rolling(window=20).std()
df['upper'] = df['MA20'] + (df['stddev'] * 2) # 상단 볼린저 밴드
df['lower'] = df['MA20'] - (df['stddev'] * 2) # 하단 볼린저 밴드
print(df.tail(10))

위와 같이 결과가 나온다.

MA20이 중간 볼린저 밴드, upper가 상단 볼린저 밴드, lower가 하단 볼린저 밴드이다.

 

참고로 볼린저 밴드를 수식으로 표현하면 다음과 같다.

중간 볼린저 밴드는 다음과 같다.

$$ \bar{X} = {\sum_{j=1}^N X_j \over N} $$

 

상단, 하단 볼린저 밴드에 들어가는 표준편차는 다음과 같이 표현한다.

$$ \sigma = \sqrt{\sum_{j=1}^N (X_j - \bar{X})^2 \over N} $$

 

이제 이 데이터를 이용하여 자신만의 멋진 투자 전략을 만들어보자.

이번 시간에는 파이썬 표준 라이브러리인 datetime을 정리해보도록 하겠다.

 

api를 이용해서 주식데이터를 가져오거나 날짜 관련 데이터를 스크레이핑 할 때 문자열 타입으로 주어지는 경우가 대부분이다. 다음은 문자열로 되어 있는 날짜와 시간을 datetime 형식으로 바꾸는 방법이다.

import datetime
format = '%Y-%m-%d %H:%M:%S' 
datetime_str = '2020-11-15 12:34:56'
datetime_dt = datetime.datetime.strptime(datetime_str, format)
print(type(datetime_dt)) # <class 'datetime.datetime'>
print(datetime_dt) # 2020-11-15 12:34:56

datetime의 strptime 함수는 텍스트형식을 datetime 형식으로 변환해주는 역할을 한다.

 

datetime 형식을 텍스트 형식으로 변환하려면 다음과 같이 strftime 함수를 사용하면 된다.

datetime_str = datetime_dt.strftime('%Y-%m-%d %H:%M:%S')

print(type(datetime_str)) # <class 'str'>
print(datetime_str)       # 2020-11-15 12:34:56

데이터포맷은 docs.python.org/ko/3/library/datetime.html 포맷 코드를 참조하자.

 

datetime을 이용해서 다음과 같이 D-day도 계산할 수 있다.

오늘부터 우리는 연애를 시작한다고 해보고 100일이 언제인지 계산해보자. 이 때 datetime 인스턴스 간의 차이를 구하는 timedelta를 이용하면 된다.

import datetime
td = datetime.timedelta(days=100) # 100일
datetime.datetime(2020,11,15) + td # datetime.datetime(2021, 2, 23, 0, 0)

 이번에는 두 날짜의 차이를 계산해보자.

dt1 = datetime.datetime(2020, 11, 1)
dt2 = datetime.datetime(2020, 11, 15)
td = dt2 - dt1
td  # datetime.timedelta(days=14)

 

 

키움 api에 접속이 잘 되던것이 갑자기 "타인계좌는 사용할 수 없습니다"라고 알림창이 뜰 때가 있다.

이번 시간에는 뜬금없이 나를 타인계좌를 이용하려는 범죄자로 만드는 이 메시지의 해결방법을 알아보자.

윈도우 화면 오른쪽 아래에 있는 api 아이콘을 선택 후 마우스 오른쪽 클릭해서 계좌비밀번호 저장을 클릭하면 계좌비밀번호를 입력할 수 있는 팝업창이 뜬다.

그런데 다음과 같이 자신의 계좌번호에 아무것도 표시가 되지 않을 때가 있다. 이럴 경우 "타인계좌는 사용할 수 없습니다."라고 뜨는 것이다. 

기존에 비밀번호까지 다 등록해서 정상적으로 접속하던 것인데 이렇게 갑자기 계좌번호가 사라진다.

이를 해결하기 위해서는 버전처리라는 것을 해야 한다.

 

이럴 때 API를 테스트할 수 있는 KOA StudioSA를 실행한 후 Open API 접속을 한다. 

로그인을 하면

버전처리를 받으라고 메시지가 나온다. 이 때 확인 버튼을 바로 누르지 말고 반드시 KOA StudioSA를 먼저 종료 후 버전처리 메시지의 확인 버튼을 눌러야 한다!!!

그리고 다시 윈도우 화면 오른쪽 아래에 있는 api 아이콘을 선택 후 마우스 오른쪽 클릭해서 계좌비밀번호 저장을 클릭한다.

그러면 자신의 계좌가 다시 나오는 것을 볼 수 있다.

이 때 비밀번호를 등록하고 다시 api 접속을 하면 정상적으로 접속되는 것을 볼 수 있다.

 

그런데 이렇게 버전처리를 받았는데도 안 될 경우가 있다.

그럼 최후의 방법으로 open api를 삭제하고 다시 설치해보기 바란다.

 

+ Recent posts