You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 파이썬 백 테스팅 on Google, you do not find the information you need! Here are the best content compiled and compiled by the toplist.Experience-Porthcawl.com team, along with other related topics such as: 파이썬 백 테스팅 파이썬 백테스팅 코드, 파이썬 퀀트 백 테스트, 업비트 백테스팅, zipline 백테스팅, 파이썬 backtrader, 파이썬 백테스팅 라이브러리, backtrader 백테스팅, 백테스팅 툴
[Python] 파이썬, 백트레이더(Backtrader)로 백테스팅 하기
- Article author: sjblog1.tistory.com
- Reviews from users: 22072 Ratings
- Top rated: 3.4
- Lowest rated: 1
- Summary of article content: Articles about [Python] 파이썬, 백트레이더(Backtrader)로 백테스팅 하기 [Python] 파이썬, 백트레이더(Backtrader)로 백테스팅 하기 · 1. Backtrader · 2. 백테스트 전략: 볼린저 밴드 · 3. 코드1: Backtrader Strategy · 5. 코드2: … …
- Most searched keywords: Whether you are looking for [Python] 파이썬, 백트레이더(Backtrader)로 백테스팅 하기 [Python] 파이썬, 백트레이더(Backtrader)로 백테스팅 하기 · 1. Backtrader · 2. 백테스트 전략: 볼린저 밴드 · 3. 코드1: Backtrader Strategy · 5. 코드2: … 시스템 트레이딩을 위한 나의 전략을 세우고, 이 전략을 과거 데이터에 대입하여 성과를 알아보며 검증하는 절차를 알아보자! 1. Backtrader https://www.backtrader.com/ Welcome – Backtrader Welcome to backtr..
- Table of Contents:
sjblog
[Python] 파이썬 백트레이더(Backtrader)로 백테스팅 하기 본문티스토리툴바
[Python] 백트레이더(Backtrader) 로 여러종목 백테스트 하기 — 검은뿔테, 파랑체크
- Article author: dragon1-honey1-wayfarer.tistory.com
- Reviews from users: 16015 Ratings
- Top rated: 3.3
- Lowest rated: 1
- Summary of article content: Articles about [Python] 백트레이더(Backtrader) 로 여러종목 백테스트 하기 — 검은뿔테, 파랑체크 안녕하세요. 이번엔 백트레이더를 활용해서 여러종목을 백테스트 해보려 합니다. 여기선 여러 종목을 읽어오고 데이터를 전달하는데 초점을 맞추었 … …
- Most searched keywords: Whether you are looking for [Python] 백트레이더(Backtrader) 로 여러종목 백테스트 하기 — 검은뿔테, 파랑체크 안녕하세요. 이번엔 백트레이더를 활용해서 여러종목을 백테스트 해보려 합니다. 여기선 여러 종목을 읽어오고 데이터를 전달하는데 초점을 맞추었 … 안녕하세요. 이번엔 백트레이더를 활용해서 여러종목을 백테스트 해보려 합니다. 여기선 여러 종목을 읽어오고 데이터를 전달하는데 초점을 맞추었습니다. 조건 : ‘삼성전자, SK하이닉스, 현대자동차를 일간시세..
- Table of Contents:
블로그 메뉴
인기 글
파이썬 백테스팅 라이브러리 : 네이버 블로그
- Article author: m.blog.naver.com
- Reviews from users: 27576 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about 파이썬 백테스팅 라이브러리 : 네이버 블로그 백테스팅 프레임워크 전체를 제로베이스부터 구현하는 것은 파이썬 프로그래밍에 익숙지 않은 파린이들에게 쉽지 않은 작업이기 때문이다. . 그러나 세상 … …
- Most searched keywords: Whether you are looking for 파이썬 백테스팅 라이브러리 : 네이버 블로그 백테스팅 프레임워크 전체를 제로베이스부터 구현하는 것은 파이썬 프로그래밍에 익숙지 않은 파린이들에게 쉽지 않은 작업이기 때문이다. . 그러나 세상 …
- Table of Contents:
카테고리 이동
Antifragile Domain
이 블로그
퀀트 트레이딩
카테고리 글
카테고리
이 블로그
퀀트 트레이딩
카테고리 글
파이썬 백테스팅 패키지 (backtesting.py)
- Article author: bright-ocean.tistory.com
- Reviews from users: 22878 Ratings
- Top rated: 3.5
- Lowest rated: 1
- Summary of article content: Articles about 파이썬 백테스팅 패키지 (backtesting.py) 파이썬 백테스팅 패키지 (backtesting.py). Bright_Ocean 2021. 8. 22. 11:51. …
- Most searched keywords: Whether you are looking for 파이썬 백테스팅 패키지 (backtesting.py) 파이썬 백테스팅 패키지 (backtesting.py). Bright_Ocean 2021. 8. 22. 11:51. backtesting 을 수행할 수 있는 backtesting.py 패키지에 대하여 알아보자 최근 변동성을 어떤 식으로 표현하는지에 관심이 생겨 일명 공포지수라고 불리는 VIX에 관해 공부를 하던 중 흥미로운 파이썬 패키지를..컴퓨터씨와 파이펫씨가 살아남기 위해 발버둥 치는 이야기
- Table of Contents:
파이썬 백테스팅 패키지 (backtestingpy)
티스토리툴바
백테스팅 (Backtesting) 환경 만들기 :: 알고트레이딩
- Article author: algotrade.tistory.com
- Reviews from users: 15753 Ratings
- Top rated: 3.1
- Lowest rated: 1
- Summary of article content: Articles about 백테스팅 (Backtesting) 환경 만들기 :: 알고트레이딩 이러한 과정을 백테스팅이라 부르며, 파이썬으로 백테스트하는 모듈(? 라이브러리?)이 Backtrader와 Backtesting 이다. …
- Most searched keywords: Whether you are looking for 백테스팅 (Backtesting) 환경 만들기 :: 알고트레이딩 이러한 과정을 백테스팅이라 부르며, 파이썬으로 백테스트하는 모듈(? 라이브러리?)이 Backtrader와 Backtesting 이다. 시스템 트레이딩을 하기 위해선 나의 전략이 과거에 어떠한 성과(performance)를 냈는지 검증하는 절차를 수행해야한다. 이러한 과정을 백테스팅이라 부르며, 파이썬으로 백테스트하는 모듈(? 라이브러리?)이 Back..
- Table of Contents:
Requirements and versions
TAG
관련글 관련글 더보기
인기포스트
python 주식 퀀트&백테스팅 관련 라이브러리 정리 — 어떤 공부 블로거의 금서목록
- Article author: marinelifeirony.tistory.com
- Reviews from users: 41802 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about python 주식 퀀트&백테스팅 관련 라이브러리 정리 — 어떤 공부 블로거의 금서목록 퀀토피언에 버금가는 고도화된 파이썬 백테스팅 라이브러리 중 하나로 클라우드 컴퓨팅 자원 제공하며, 자신이 개발한 소스는 QuantConnect 클라우드 … …
- Most searched keywords: Whether you are looking for python 주식 퀀트&백테스팅 관련 라이브러리 정리 — 어떤 공부 블로거의 금서목록 퀀토피언에 버금가는 고도화된 파이썬 백테스팅 라이브러리 중 하나로 클라우드 컴퓨팅 자원 제공하며, 자신이 개발한 소스는 QuantConnect 클라우드 … Zipline GitHub – quantopian/zipline: Zipline, a Pythonic Algorithmic Trading Library Zipline, a Pythonic Algorithmic Trading Library. Contribute to quantopian/zipline development by creating an acco..
- Table of Contents:
블로그 메뉴
공지사항
인기 글
태그
최근 댓글
최근 글
티스토리
Zipline
QuantConnect
Quantiacs
Quantstats
Backtrader
backtesting
티스토리툴바
See more articles in the same category here: toplist.Experience-Porthcawl.com/blog.
[Python] 파이썬, 백트레이더(Backtrader)로 백테스팅 하기
반응형
시스템 트레이딩을 위한 나의 전략을 세우고, 이 전략을 과거 데이터에 대입하여 성과를 알아보며 검증하는 절차를 알아보자!
1. Backtrader
https://www.backtrader.com/
Backtrader의 함수와 옵션은 홈페이지를 참고하시면 됩니다.
import backtrader as bt from pykrx import stock import pandas as pd
2. 백테스트 전략: 볼린저 밴드
볼린저밴드는 20일 이동평균선을 기준으로 주가가 어느 위치에 있는지 알려줍니다.
볼린저밴드 상단선: 20일 이동평균선 + 2 * 표준편차
볼린저밴드 하단선: 20일 이동평균선 – 2 * 표준편차
(예시)
그래서,
첫 번째 전략은 볼린저 밴드 하단선에서 매수하고, 볼린저 밴드 중간선에서 매도한다는 것입니다.
(본 전략은 코드 작성과 공부를 위한 임의적 설정이므로, 수익을 대변하지 않습니다.)
3. 코드1: Backtrader Strategy
class SmaCross(bt.Strategy): # bt.Strategy를 상속한 class로 생성해야 함. params = ( (“period”, 20), (“devfactor”, 2), (“debug”, False) ) def log(self, txt, dt=None): ”’ Logging function fot this strategy”’ dt = dt or self.data.datetime[0] if isinstance(dt, float): dt = bt.num2date(dt) print(‘%s, %s’ % (dt.isoformat(), txt)) def __init__(self): self.boll = bt.indicators.BollingerBands(period=self.p.period, devfactor=self.p.devfactor, plot=True) def next(self): global size if not self.position: # not in the market if self.data.low[0] < self.boll.lines.bot[0]: bottom = self.boll.lines.bot[0] size = int(self.broker.getcash() / bottom) # 최대 구매 가능 개수 self.buy(price=bottom, size=size) # 매수 size = 구매 개수 설정 self.log('BUY CREATE, %.2f' % (bottom)) print(size, 'EA') else: if self.data.high[0] > self.boll.lines.mid[0]: self.sell(price=self.boll.lines.mid[0],size=size) # 매도 self.log(‘SELL CREATE, %.2f’ % (self.boll.lines.mid[0])) print(size, ‘EA’)
params = (
(“period”, 20),
(“devfactor”, 2),
(“debug”, False)
)
# 볼린저 밴드에 사용할 이동평균 일 수와 표준편차에 곱할 상수를 정의합니다.
def log(self, txt, dt=None):
# 프롬프트에 매수 or 매도, 매수매도 가격, 개수를 출력합니다.
self.boll = bt.indicators.BollingerBands(period=self.p.period, devfactor=self.p.devfactor, plot=True)
# 볼린저 밴드 indicators를 가져옵니다.
if not self.position: # not in the market
# 매수한 종목이 없다면,
if self.data.low[0] < self.boll.lines.bot[0]: # 저가 < 볼린저 밴드 하한선 이면, size = int(self.broker.getcash() / bottom) # 최대 구매 가능 개수 # size는 매수 또는 매도 개수로, 현재 금액에서 타겟가격으로 나누어줍니다. # 볼린저 밴드 하한선에서 구매 시 최대 구매 가능 개수 self.buy(price=bottom, size=size) # 매수 size = 구매 개수 설정 # 매수 self.log('BUY CREATE, %.2f' % (bottom)) # 프롬프트에 출력 if self.data.high[0] > self.boll.lines.mid[0]:
# 고가 > 볼린저 밴드 중간선이면,
self.sell(price=self.boll.lines.mid[1],size=size) # 매도
34번째 줄: 매도 (20일 이동평균선에서 매도 = 볼린저 밴드 중간선)
5. 코드2: 시가, 고가, 저가, 종가, 거래량 불러오기
size=0 stock_name = “KODEX 200” stock_from = “20171125” stock_to = “20211125” # 전체 종목코드와 종목명 가져오기 stock_list = pd.DataFrame({‘종목코드’:stock.get_etf_ticker_list(stock_to)}) stock_list[‘종목명’] = stock_list[‘종목코드’].map(lambda x: stock.get_etf_ticker_name(x)) stock_list.head() ticker = stock_list.loc[stock_list[‘종목명’]==stock_name, ‘종목코드’] df = stock.get_etf_ohlcv_by_date(fromdate=stock_from, todate=stock_to, ticker=ticker) df = df.drop([‘NAV’,’거래대금’,’기초지수’], axis=1) df = df.rename(columns={‘시가’:’open’, ‘고가’:’high’, ‘저가’:’low’, ‘종가’:’close’, ‘거래량’:’volume’}) df[“open”]=df[“open”].apply(pd.to_numeric,errors=”coerce”) df[“high”]=df[“high”].apply(pd.to_numeric,errors=”coerce”) df[“low”]=df[“low”].apply(pd.to_numeric,errors=”coerce”) df[“close”]=df[“close”].apply(pd.to_numeric,errors=”coerce”) df[“volume”]=df[“volume”].apply(pd.to_numeric,errors=”coerce”) data = bt.feeds.PandasData(dataname=df) cerebro = bt.Cerebro() # create a “Cerebro” engine instance cerebro.broker.setcash(1000000) cerebro.broker.setcommission(0.00015) #0.015% 수수료 cerebro.adddata(data) # Add the data feed cerebro.addstrategy(SmaCross) # Add the trading strategy cerebro.run() # run it all cerebro.plot(style=’candlestick’,barup=’red’,bardown=’blue’,xtight=True,ytight=True, grid=True) # and plot it with a single command
stock_name = “KODEX 200”
stock_from = “20201230”
stock_to = “20211130”
# 조회할 ETF와 날짜를 입력합니다.
stock_list = pd.DataFrame({‘종목코드’:stock.get_etf_ticker_list(stock_to)})
stock_list[‘종목명’] = stock_list[‘종목코드’].map(lambda x: stock.get_etf_ticker_name(x))
# stock_to 에 해당하는 날짜에 존재하는 ETF를 불러옵니다.
# 개별 종목은 get_market_ticker_list(market=”ALL”) 함수를 확인해주세요!
6. 결과
본인의 전략을 만들어 백테스팅해보세요!
(본 전략은 코드 작성과 공부를 위한 임의적 설정이므로, 수익을 대변하지 않습니다.)
궁금한 부분은 댓글로 남겨주세요.
반응형
[Python] 백트레이더(Backtrader) 로 여러종목 백테스트 하기
728×90
반응형
안녕하세요.
이번엔 백트레이더를 활용해서 여러종목을 백테스트 해보려 합니다.
여기선 여러 종목을 읽어오고 데이터를 전달하는데 초점을 맞추었습니다.
조건 : ‘삼성전자, SK하이닉스, 현대자동차를 일간시세 기준 RSI 40 미만 매수, 60초과 매도’
전체적인 코드의 흐름은 첫번째 백트레이더 포스트와 동일하니, 참고해주시면 되겠습니다.
백트레이더로 여러 종목 데이터를 전달하려면 여러 종목의 데이터프레임 변수가 필요합니다.
‘삼성전자’, ‘SK하이닉스’, ‘현대자동차’ 3종목을 가져와보겠습니다.
mk = Analyzer.MarketDB() # 종목명 기입 stocks = [‘삼성전자’, ‘SK하이닉스’, ‘현대자동차’] datalist = [] cerebro = bt.Cerebro() cerebro.broker.setcash(10000000) # 여러 종목의 데이터를 받기 위해 반복문 사용 for i in range(0, len(stocks)): df = mk.get_daily_price(stocks[i], ‘2020-07-31’) df[‘date’] = pd.to_datetime(df[‘date’]) df.columns = [‘code’, ‘datetime’, ‘open’, ‘high’, ‘low’, ‘close’, ‘diff’, ‘volume’] df.drop([‘code’, ‘diff’], axis=1, inplace=True) datalist.append(df) data = bt.feeds.PandasData(dataname=datalist[i]) cerebro.adddata(data, name=stocks[i])
먼저 빈 데이터 리스트를 만들고 종목이 여러개인 만큼 for 반복문을 써서 각 종목의 데이터프레임을 불러와 편집한 후, 데이터리스트에 하나씩 추가한 다음 백트레이더에 데이터를 전달해 주는 형태입니다.
여러 종목에 대한 데이터를 전달했으니, 백테스팅 전략도 여러 데이터에 대한 것으로 바꿔줘야 합니다.
이 또한 마찬가지로 각 종목에 대한 반복문을 써서 바꿔주도록 합니다.
class MyStrategy(bt.Strategy): def __init__(self): self.rsi = dict() for i, d in enumerate(self.datas): # 여러 데이터 반복 self.rsi[d] = bt.indicators.RSI_SMA(d.close, period=21) def next(self): for i, d in enumerate(self.datas): # 여러 데이터 반복 pos = self.getposition(d).size # 단일 데이터일 때와 다른 형태 if not pos: # no market / no orders if self.rsi[d] < 40: self.order = self.buy(data=d) else: if self.rsi[d] > 60: self.order = self.sell(data=d)
전체 코드는 아래와 같습니다. ([1]을 참고하시면 더욱 좋습니다.)
from datetime import datetime, timedelta import backtrader as bt from backtrader import cerebro from pandas.io.formats import style import Analyzer import pandas as pd class MyStrategy(bt.Strategy): def __init__(self): self.rsi = dict() for i, d in enumerate(self.datas): self.rsi[d] = bt.indicators.RSI_SMA(d.close, period=21) def next(self): for i, d in enumerate(self.datas): pos = self.getposition(d).size if not pos: # no market / no orders if self.rsi[d] < 40: self.order = self.buy(data=d) else: if self.rsi[d] > 60: self.order = self.sell(data=d) mk = Analyzer.MarketDB() stocks = [‘삼성전자’, ‘SK하이닉스’, ‘현대자동차’] datalist = [] cerebro = bt.Cerebro() cerebro.broker.setcash(10000000) for i in range(0, len(stocks)): df = mk.get_daily_price(stocks[i], ‘2020-07-31’) df[‘date’] = pd.to_datetime(df[‘date’]) df.columns = [‘code’, ‘datetime’, ‘open’, ‘high’, ‘low’, ‘close’, ‘diff’, ‘volume’] df.drop([‘code’, ‘diff’], axis=1, inplace=True) datalist.append(df) data = bt.feeds.PandasData(dataname=datalist[i]) cerebro.adddata(data, name=stocks[i]) cerebro.addstrategy(MyStrategy) cerebro.broker.setcommission(commission=0.0014) cerebro.addsizer(bt.sizers.SizerFix, stake=30) cerebro.run() cerebro.plot(style=’candlestick’)
마지막으로 이를 실행해보면 아래 차트가 출력됩니다. 위에서부터 삼성전자, SK하이닉스, 현대자동차의 차트입니다.
위에서부터 삼성전자, SK하이닉스, 현대자동차의 RSI 40미만 매수, 60초과 매도조건 백테스팅 결과
3종목에 대한 백테스팅이 된걸 확인하실 수 있습니다.
종목명이 한글이라 깨진 현상을 확인할 수 있는데요, 이는 추후 포스팅 해보도록 하겠습니다.
참고.
[1]. https://backtest-rookies.com/2017/08/22/backtrader-multiple-data-feeds-indicators/ [2]. https://jsp-dev.tistory.com/104728×90
반응형
파이썬 백테스팅 라이브러리
# 백테스팅, 구현이 막막하다면
백테스팅은 퀀트 트레이딩 시스템을 구축하는 데 있어 가장 필수적이고 중요한 부분임에 틀림없다. 백테스팅은 전략 개발(Strategy Development)과 전략 집행(Strategy Execution)의 사이에 위치해 있으며, 전략에 대한 아이디어를 구상하고 이를 실제 운용할 것인가를 결정하는 데 있어서 중요한 의사결정의 근거를 제공해 준다. 만약 어떤 한 전략에 하자가 있다면, 엄격한 백테스팅을 통해 이러한 결함을 찾아낼 수 있으며, 이는 실제 전략의 집행이 이루어지지 못하게 함으로써 잠재적 손실을 예방할 수 있다.
그러나 중요한 것은 형이상학적인 탁상공론이 아닌 실제 결과물이 아니었던가. 모두가 백테스팅이라는 개념이 무엇인지는 알고 있으나, 정작 전략에 대한 시그널을 생성하고 이를 기반으로 백테스팅을 돌려본 뒤 이에 대한 성과분석을 구현하는 것은 그리 녹록지만은 않다. 백테스팅 프레임워크 전체를 제로베이스부터 구현하는 것은 파이썬 프로그래밍에 익숙지 않은 파린이들에게 쉽지 않은 작업이기 때문이다.
그러나 세상은 넓고 천재들은 많다 했던가. 그들은 이미 우리 같은 머글들을 위해 백테스팅 구현을 위한 라이브러리들을 예비하셨다. 우리가 해야 할 일은 단지 이러한 도구들을 가져다 쓰면 되는 것이다. 수많은 백테스팅 라이브러리들이 존재하지만 여기서는 초심자 입장에서 가장 다뤄보기 쉬운 여섯 가지만 압축해서 정리해보았다.
# 파이썬 백테스팅 라이브러리
1) backtesting
가장 처음 소개할 백테스팅 라이브러리는 바로 이름 자체가 백테스팅인 backtesting 라이브러리이다. 이 라이브러리는 여러가지 트레이딩 전략을 구현하는 데 있어 매우 쉽고 직관적인 인터페이스를 제공하고 있으며, 백테스팅의 결과물을 상호작용 방식의 시각화 툴을 사용해 예쁘게 보여준다. 더불어 이 라이브러리는 기술적지표에 대한 라이브러리인 TA-Lib이나 Tulip과의 엄청난 호환성을 자랑하며, 아주 빠른 속도로 패러미터에 대한 최적화 기능까지 탑재하고 있기 때문에 퀀트 전략이 처음인 초심자들이 매우 편리하게 백테스팅을 해볼 수 있는 도구이다.
라이브러리 레퍼런스 : https://kernc.github.io/backtesting.py/
So you have finished reading the 파이썬 백 테스팅 topic article, if you find this article useful, please share it. Thank you very much. See more: 파이썬 백테스팅 코드, 파이썬 퀀트 백 테스트, 업비트 백테스팅, zipline 백테스팅, 파이썬 backtrader, 파이썬 백테스팅 라이브러리, backtrader 백테스팅, 백테스팅 툴