이 책은 파이썬이라는 프로그래밍 언어를 이용한 알고리즘 트레이딩을 다룹니다. 프로그래밍을 전혀 모르는 비전공자나 HTS(Home Trading System)로 주식 투자 정도만 할 수 있는 일반인도 빠르게 파이썬과 알고리즘 트레이딩을 배울 수 있는 알고리즘 트레이딩 입문서입니다.

파이썬 기초 문법에 대한 친절한 설명으로 시작해서, 파이썬을 이용한 각 증권사 API 사용법, Pands 를 이용한 데이타 분석 기초와 함께 마지막으로 알고리즘 트레이딩 실전 프로젝트까지 기초부터 실전 노하우까지 모두 다루는 종합 안내서입니다.

 

상세 이미지

상세 이미지

이 책은 “프로그래밍 책이지만 기존의 전공자를 위한 프로그래밍 책이 아니라 비전공자와 일반인이 파이썬을 쉽고 재미있게 배울 수 있어야 한다”는 목표와 “이 책은 주식과 관련된 주식 책이지만 기존 주식 책과는 달리 실제 노하우를 어떻게 프로그램으로 구현할 수 있을지를 구체적으로 설명해야 한다”는 목표를 갖고 집필했습니다.

1부에서는 파이썬 기초를 다룹니다. 단순히 파이썬 문법을 설명하는 것이 아니라 파이썬과 주식과 관련된 예제를 통해 더욱 재미있게 파이썬을 배울 수 있습니다.

2부에서는 파이썬을 이용해 증권사 API의 사용법을 다룹니다. 대신증권 CYBOS Plus, 이베스트투자증권 xing API, 키움증권 OpenAPI+의 기초 및 기본 API 사용법을 배울 수 있습니다.

3부에서는 pandas라는 라이브러리를 이용한 데이터 분석 기초를 다루고 zipline을 이용해 백테스팅하는 방법을 소개합니다. 그리고 matplotlib를 통해 데이터를 시각화하는 방법과 PyQt를 이용한 GUI(Graphical User Interface) 개발을 배웁니다.

4부에서는 1~3부에서 배운 내용을 바탕으로 실전 프로그램을 개발합니다. 실전 프로그램에서는 거래량 기반의 투자 알고리즘과 배당률 기반 투자 알고리즘을 구현하고, 이를 통해 실제 매수/매도까지 자동으로 진행하는 프로그램을 개발함으로써 개발에 대한 자신감을 가질 수 있습니다.

조대표

광운대 컴퓨터공학과를 졸업하고 동 대학원에서 석사 및 박사학위를 취득했다. 주 전공은 영상처리(비디오 압축)이며, 여러 관련 프로젝트에 참여했다. 비디오 압축 분야의 국제 표준화 회의에 다년간 참석했고, 30여 건의 국내외 특허를 출원했다. 평범한 개발자로 파이썬을 좋아하다 취미 삼아 알고리즘 트레이딩을 시작했다. 파이썬을 사용한 알고리즘 트레이딩과 관련해 네이버 카페(http://cafe.naver.com/pystock)와 파이스탁(http://pystock.net)을 운영하고 있다.

  • [1부] 파이썬 프로그래밍
    • ▣ 01장: 파이썬 시작하기
      • 파이썬과 알고리즘 트레이딩
        • 프로그래밍과 프로그래밍 언어
        • 주식투자
        • 알고리즘 트레이딩
        • 파이썬이란?
      • 파이썬 설치
        • 아나콘다 설치 파일 다운로드
        • 아나콘다 설치
      • 파이썬 인터프리터 실행
        • 파이썬 IDLE 이용하기
        • 파이썬 들여쓰기
      • 연습 문제
      •  
    • ▣ 02장: 파이썬 변수와 문자열
      • 파이썬으로 하는 계산
      • 변수
        • 파이썬 변수와 객체
      • 문자열
        • 문자열 인덱싱 및 슬라이싱
        • 문자열 자르기
        • 문자열 합치기
      • 기본 데이터 타입
      • 연습 문제
      •  
    • ▣ 03장: 기본 자료구조
      • 리스트
        • 리스트 생성
        • 리스트 인덱싱
        • 리스트 슬라이싱
        • 리스트에 데이터 삽입하기
        • 리스트 데이터 삭제
      • 튜플
        • 튜플 슬라이싱
      • 딕셔너리
        • 딕셔너리에 데이터 삽입 및 삭제
        • 딕셔너리로부터 키-값 구하기
      • 연습 문제
      •  
    • ▣ 04장: 제어문
      • Boolean
      • 논리 연산자
      • if 문
        • if ~ else 문
        • if ~ elif ~ else 문
      • for 문
        • for와 range
        • for와 리스트
        • for와 튜플
        • for와 딕셔너리
      • while 문
        • while 문을 이용한 상한가 계산
        • while과 if
        • break와 continue
      • 중첩 루프
      • 연습 문제
      •  
    • ▣ 05장: 함수와 모듈
      • 함수
      • 반환값이 있는 함수
        • 함수 호출 과정 이해하기
        • 두 개의 값 반환하기
      • 모듈
        • 모듈 만들기
        • 파이썬에서 시간 다루기
        • OS 모듈
        • 모듈을 임포트하는 세 가지 방법
      • 파이썬 내장 함수
      • 연습 문제
      •  
    • ▣ 06장: 클래스
      • 클래스란?
        • 클래스 기초
        • 클래스 정의
        • 클래스에 메서드 추가하기
      • 클래스 생성자
      • self 이해하기
      • 클래스 네임스페이스
      • 클래스 변수와 인스턴스 변수
      • 클래스 상속
      •  
    • ▣ 07장: 파일 다루기
      • 파일 읽기
      • 파일 쓰기
      • 연습 문제
      •  
    • ▣ 08장: 실전 프로젝트
      • PyCharm을 이용한 개발 환경 구축
        • PyCharm 설치 프로그램 다운로드
        • PyCharm 설치
        • PyCharm 초기 설정
        • 프로젝트 생성
        • PyCharm 기타 설정
      • 주소록 프로젝트
        • Contact 클래스 만들기
        • 사용자로부터 데이터 입력받기
        • 메인 메뉴 구성하기
        • 연락처 입력 동작시키기
        • 연락처 출력하기
        • 연락처 삭제하기
      • 주소록 프로젝트의 기능 향상
        • 연락처 저장 함수 작성하기
        • 연락처 불러들이기
        • 명령 프롬프트에서 프로그램 실행하기
      •  
  • [2부] 증권사 API 기초
    • ▣ 09장: 파이썬과 COM
      • COM과 파이썬
      • 파이썬으로 엑셀 다루기
        • 엑셀 파일 읽기
        • 셀에 색깔 입히기
      •  
    • ▣ 10장: 대신증권 API
      • 개발 환경 구축
        • 계좌 개설 및 CYBOS 5 설치
        • CYBOS Plus 로그인
      • 기초 API 익히기
        • 연결 상태 확인
        • 주식 코드 조회
      • 기본 API 익히기
        • 종목 코드 가져오기
        • 과거 데이터 구하기
        • PER, EPS 데이터 구하기
      • API를 이용한 알고리즘 개발
        • 거래량 분석을 통한 대박 주 포착
        • 업종별 PER 분석을 통한 유망 종목 찾기
      • 매수/매도 API 익히기
        • 모의투자 가입하기
        • 매수/매도하기
      •  
    • ▣ 11장: 이베스트투자증권 API
      • 개발 환경 구축
        • 계좌 개설 및 xingAPI 패키지 설치
        • 모의투자 가입하기
      • 기초 API 익히기
        • 로그인
        • 계좌 정보 조회
      • 기본 API 익히기
        • DevCenter 사용하기
        • 단일 데이터 조회하기
        • 반복 데이터 조회하기
        • 차트 데이터 받아오기
      •  
    • ▣ 12장: 키움증권 API
      • 개발 환경 구축
        • 계좌 개설 및 모듈 설치
        • 모의투자 가입하기
        • KOA Studio 사용하기
      • PyQt 기초
        • PyQt 소개
        • Hello PyQt
        • 위젯과 윈도우
        • 이벤트 처리
      • 기초 API 익히기
        • Open API+ 로그인하기
        • 로그인 이벤트 처리하기
        • 기본 정보 요청하기
        • 계좌 정보 가져오기
        • 종목 코드 및 한글 종목명 가져오기
      •  
  • [3부] 데이터 분석 기초
    • ▣ 13장: pandas를 이용한 데이터 분석 기초
      • pandas Series
        • 파이썬 리스트, 튜플, 딕셔너리
        • Series 기초
        • Python Console
      • pandas DataFrame
        • DataFrame 생성
        • DataFrame 칼럼, 로우 선택
      • 주식 데이터 받기
        • DataReader 사용하기
        • 차트 그리기
      • 이동평균선 구하기
        • 이동평균선
        • pandas를 이용한 주가이동평균 계산
        • 주가이동평균선 그리기
      •  
    • ▣ 14장: pandas와 Zipline을 이용한 백테스팅
      • Zipline 시작하기
        • Zipline 설치
        • Zipline 기초
      • 이동평균선 전략 백테스트
        • Zipline을 이용한 이동평균선 전략 테스트
        • 이동평균선 전략 보완하기
      • 유가증권시장/코스닥시장 백테스팅
        • 거래 수수료 설정
        • 초기 투자 금액 설정
      •  
    • ▣ 15장: matplotlib를 이용한 데이터 시각화
      • pyplot 기초
        • 간단한 그래프 그리기
        • Figure와 subplots
        • 라벨 및 범례 표시하기
        • matplotlib 구성
      • 다양한 그래프 그리기
        • 수정 종가와 거래량 한번에 그리기
        • 캔들 스틱 차트 그리기
        • bar 차트 그리기
        • pie 차트 그리기
      •  
    • ▣ 16장: PyQt를 이용한 GUI 프로그래밍
      • PyQt 기초
        • 아나콘다에서 PyQt 설치 및 업데이트
        • PyQt 복습하기
      • Qt Designer
        • Qt Designer 소개
        • Qt Designer를 이용한 UI 구성
        • UI 파일을 파이썬 코드로 변환하기
        • UI 파일을 파이썬 코드에서 로드하기
        • 이벤트 처리하기
      • 기본 위젯
        • QPushButton
        • QLabel
        • QLineEdit와 QStatusBar
        • QRadioButton과 QGroupBox
        • QCheckBox
        • QSpinBox 481
        • QTableWidget
      • Layout
        • QVBoxLayout
        • QHBoxLayout
        • QGridLayout
        • 레이아웃 중첩
      • 다이얼로그
        • QFileDialog
        • QInputDialog
        • 메인 윈도우와 다이얼로그의 상호작용
      • PyQt와 matplotlib 연동
        • 기본 레이아웃 구성
        • 그래프 그리기
      •  
  • [4부] 실전 알고리즘 트레이딩
    • ▣ 17장: 주가 데이터 저장하기
      • SQLite
        • sqlite3 모듈 기초
        • 데이터베이스 브라우저
        • 데이터베이스로부터 데이터 읽기
      • pandas와 SQLite
        • DataFrame 객체를 SQLite DB에 저장하기
        • SQLite DB에서 테이블 로드하기
        • pandas를 이용한 주가 데이터 저장
      • 증권사 API를 이용한 주가 데이터 저장
        • 종목 코드 리스트 얻어 오기
        • 일봉 데이터 연속조회
        • SQLite DB에 일봉 데이터 저장하기
      •  
    • ▣ 18장: 실전 프로그램 개발
      • 개발 1일 차
        • 자동 버전 처리 스크립트
        • 윈도우 작업 스케줄러
        • PyTrader 구현
        • 키움 OpenAPI+ 자동 로그인
      • 개발 2일 차
        • UI 구성
        • Kiwoom.py 파일 업데이트
        • pytrader.py 파일 업데이트
        • 매수 테스트
      • 개발 3일 차
        • UI 구성
        • Kiwoom.py 파일 업데이트
        • pytrader.py 파일 업데이트
      • 개발 4일 차
        • UI 구성 및 매수/매도 목록 파일 생성
        • 선정 종목 정보 출력하기
        • 자동 주문 구현하기
      •  
    • ▣ 19장: 실전 프로그램 개발(2)
      • 개발 5일 차
        • 코스피/코스닥 종목코드 가져오기
        • 일별 데이터 가져오기
        • 급등주 포착 알고리즘 구현
      • 개발 6일 차
        • HTML 기초
        • 웹 페이지 크롤링
        • 배당률 기반 투자 알고리즘
        • 배당률 기반 투자 알고리즘 구현(1)
        • 배당률 기반 투자 알고리즘 구현(2)
        • 배당률 기반 투자 알고리즘 구현(3)
      •  
    • ▣ 부록 A: 소스코드 다운로드 및 실행
      •  
    • ▣ 부록 B: PyCharm을 이용한 디버깅
      • 브레이크포인트 설정
      • 디버깅 모드로 프로그램 실행
      • 함수 디버깅하기
      • 추가 기능 살펴보기
      •  
    • ▣ 부록 C: 유용한 PyCharm 단축키
      •  
  • 20쪽, 문제 1-4

    다음 가지 파이썬 ==> 다음 다섯 가지 파이썬

  • 694쪽, 문제 2-1 풀이

    print(sum) ==> print(total)

예제코드 관련 GitHub 페이지

관련 글