Algorithmic Trading with Python(파이썬과의 알고리즘 트레이딩)
This is a Guest Post by Troy Bombardia of sentimentrader.com
이것은 of의 Troy Bombardia의 sentimentrader.com 게스트 포스트 입니다.
Most traders begin trading with discretionary trading strategies since these strategies are usually easier to understand. Just pull up a chart, overlay some indicators onto the chart, and voila!(See there)
대부분의 트레이더는 일반적으로 이해하기 쉽기 때문에 임의 거래 전략으로 거래를 시작합니다. 차트를 끌어 내고 일부 지표를 차트에 오버레이하면됩니다.
You can start to understand, analyze, and learn about the market from Day 1! But as your trading experience and knowledge accumulates over the years, you may want to level up your trading by looking at quantitative trading strategies. These trading strategies are more difficult to understand and can be quite difficult to create if you don’t have a background in computer programming. So if you’re interested in quantitative trading, I’m going to share with you how quants like myself use Python for trading.
당신은 첫날부터 시장을 이해하고 분석하고 배울 수 있다! 하지만 당신의 거래 경험과 지식이 축적되면서, 당신은 수량적 거래 전략을 살펴서 거래를 수준을 끌어올리고 싶을 것이다. 이러한 거래 전략은 이해하기가 더 어렵고 컴퓨터 프로그래밍에 대한 배경이 없다면 만들기가 상당히 어려울 수 있다. 그래서 수량적 거래에 관심이 있다면 나 같은 quants들이 어떻게 Python을 거래에 이용하는지를 여러분과 공유해 보겠다.
What is Python, and why not stick with Excel?
파이톤이란 무엇이며, 엑셀을 고집하지 않는 이유는 무엇인가?
Python is a high-level programming language that’s more user and beginner-friendly than many other popular programming languages. Many quants write Python code to backtest strategies and execute their trades. Now you may be wondering, “what if I don’t know Python? Learning it sounds difficult, and I can just stick to Excel!”
파이톤은 다른 많은 인기 있는 프로그래밍 언어보다 더 사용자적이고 초보자 친화적인 고급 프로그래밍 언어다. 많은 쿼터들은 전략을 백테스트하고 그들의 거래를 실행하기 위해 파이선 코드를 쓴다. 여러분은 아마 궁금해 할 겁니다. "내가 파이톤을 모른다면? 배우는 것은 어렵게 들리는데, 엑셀만 고집하면 되잖아!"
You certainly can stick with Excel. Excel is great for backtesting simple trading strategies such as “go long when the S&P 500 is above its 200 day moving average, otherwise sell and shift into cash”.
너는 확실히 엑셀을 고수할 수 있다. 엑셀은 "S&P 500이 200일 이동 평균 이상일 때 오래 간다 그렇지 않으면 매도하고 현금으로 전환하라"와 같은 단순한 거래 전략을 백테스팅하는데 아주 좋다.
Like drag-and-drop website templates, Excel is extremely user friendly for beginners. Every equation that you calculate can be done simply through pointing(찍고)-and-clicking on other cells. Meanwhile, creating the same trading strategy using Python is more complicated and involves a more indepth(심도 있는) understanding of Python code. So why learn Python and use it for trading?
끌어서 놓기 웹 사이트 템플릿과 마찬가지로 Excel은 초보자에게 매우 사용자 친화적입니다. 계산하는 모든 방정식은 다른 셀을 가리키고 클릭하여 간단히 수행 할 수 있습니다. 한편, 파이썬을 사용하여 동일한 거래 전략을 만드는 것은 더 복잡하며 파이썬 코드에 대한 심층적 인 이해가 필요합니다. 그렇다면 왜 파이썬을 배우고 거래에 사용합니까?
While Excel is great for beginners, it isn’t very scalable(확장할 수 있는) the way Python is. Some of these problems can be mitigated with the use of Excel VBA, but VBA isn’t as functional as Python:
Excel은 초보자에게는 훌륭하지만 Python과는 달리 확장 성이 뛰어납니다. 이러한 문제 중 일부는 Excel VBA를 사용하여 완화 할 수 있지만 VBA는 Python만큼 기능적이지 않습니다.
Let’s assume I want to backtest a trading model that can simultaneously look at 1000 different stocks, and pick the 50 best stocks to trade. Backtesting such a model in Excel would be a nightmare, since it would take forever to work on 1000 columns(열) of price data. Backtesting such a strategy is much easier in Python.
1000개의 다른 주식을 동시에 볼 수 있는 거래 모델을 역평가하고 거래할 수 있는 50개의 가장 좋은 주식을 고르고 싶다고 가정해 봅시다. 엑셀에서 그러한 모델을 백테스트하는 것은 악몽 같은 일이 될 것이다. 왜냐하면 1000개의 열의 가격 데이터를 가지고 작업하는 것은 영원히 걸릴 것이기 때문이다. Python에서는 그러한 전략을 백테스팅하는 것이 훨씬 더 쉽다.
Let’s assume that I want to optimize my trading model (while being careful of curve fitting). I recently did this to test 65,000 pairs of MACD settings to find the best one. If you try to do this Excel, it will take days if not weeks to find the best setting. But in Python, all you need to do is write a short piece of code. Let your computer execute the code and within a few minutes, you will have the answer you’re looking for.
곡선 피팅에주의하면서 거래 모델을 최적화하고 싶다고 가정 해 봅시다. 최근에 65,000 쌍의 MACD 설정을 테스트하여 최상의 설정을 찾기 위해이 작업을 수행했습니다. 이 Excel을 시도하면 최상의 설정을 찾는 데 몇 주가 걸리지 않고 며칠이 걸립니다. 그러나 파이썬에서는 간단한 코드를 작성하기 만하면됩니다. 컴퓨터가 코드를 실행하도록하고 몇 분 안에 원하는 답변을 얻을 수 있습니다.
Why Python instead of other programming languages for trading?
왜 Python이 다른 프로그래밍 언어 대신에 거래를 위하여 사용하는가요?
If you’re new to programming, the sheer (몹씨)number of programming languages that you can use for quantitative trading may seem daunting(위압하다; 주눅들다). Python, C++, C#, Java, R, etc. Which language should you start with?
프로그래밍에 익숙하지 않다면, 양적 거래에 사용할 수 있는 프로그래밍 언어의 수가 엄청나게 많아 보일지도 모른다. 파이톤, C++, C#, 자바, R 등 어떤 언어부터 시작해야 할까?
I personally prefer Python (and that’s what I started with). Python is one of the most widely used programming languages in quantitative trading since it’s a high-level(고급) language (which means that the code is easier to understand and hence, more user friendly). Other programming languages such as C++ are older and as middle-level languages, are harder to learn/use. In addition, Python has some great libraries(도서관) such as Pandas(판다) which uses “dataframes” which look quite similar to Excel spreadsheets.
저는 개인적으로 파이썬을 선호합니다 (그리고 그것이 제가 시작한 것입니다). 파이썬은 고급 언어이기 때문에 정량 거래에서 가장 널리 사용되는 프로그래밍 언어 중 하나입니다 (즉, 코드가 이해하기 쉬우므로 사용자에게 친숙합니다). C ++과 같은 다른 프로그래밍 언어는 더 오래되고 중급 언어이므로 배우기 / 사용하기가 더 어렵습니다. 또한 Python에는 Excel 스프레드 시트와 매우 유사한 "데이터 프레임"을 사용하는 Pandas와 같은 훌륭한 라이브러리가 있습니다.
Aside from Python, Java is probably one of the most popular programming languages for trading, but is more difficult for beginners to learn.
파이톤을 제외하고 자바는 아마도 가장 인기 있는 무역용 프로그래밍 언어 중 하나일 것이지만 초보자들이 배우는 것은 더 어렵다.
Python + Pandas
파이톤+판다스
On its own(그 자체로는), Python for trading is quite hard to use. That’s where the Pandas library for Python comes into play(활동상태가 되다). From a layman(보통사람)’s perspective, Pandas essentially turns data into a table (or “dataframe”) that looks like an Excel spreadsheet. once the market price data looks like a spreadsheet with Pandas, you can more easily run Python code for trading purposes (e.g. building trading models). This means that in order to effectively use Python for trading, you need to use Python + Pandas together.
거래용 파이톤은 그 자체로 사용하기가 꽤 어렵다. 거기서 파이썬을 위한 판다 도서관이 나온다. 일반인의 관점에서 판다는 본질적으로 데이터를 엑셀 스프레드시트처럼 보이는 테이블(또는 "데이터 프레임")로 바꾼다. 일단 시장 가격 데이터가 판다가 포함된 스프레드시트처럼 보이면 거래 목적으로 파이선 코드를 더 쉽게 실행할 수 있다(예: 빌딩 거래 모델). 거래에 파이톤을 효과적으로 활용하려면 파이톤+판다를 함께 사용해야 한다는 뜻이다.
Here’s what Pandas looks like:
판다의 모습은 다음과 같다.
How can you use Python for trading?
어떻게 파이톤을 거래에 사용할 수 있는가?
There are many different use cases for Python when trading. The most notable use cases are:
거래할 때 파이썬의 사용 사례는 매우 다양하다. 가장 주목할 만한 사용 사례는 다음과 같다.
Backtesting & building trading models
백테스트 및 빌딩 거래 모델
Many traders begin with discretionary trading strategies. But the problem with discretionary trading is that:
많은 거래자들은 재량적 거래 전략에서 출발한다. 그러나 재량 거래의 문제는 다음과 같다.
You don’t know how well your trading strategy works through time and under different types of market environments. Does it work well in a bull market, a bear market, a choppy market,(불안한 시장) a strongly trending market?
당신은 당신의 거래 전략이 시간을 통해서 그리고 다른 종류의 시장 환경에서 얼마나 잘 작동하는지 모른다. 그것은 불 시장, 약세 시장, 불안정한 시장, 강한 유행하는 시장에서 잘 작동하는가?
Even if your discretionary trading strategy worked well so far, how do you know it works because of skill and not luck? E.g. any strategy – even flipping(훅 던지다) a coin – would have worked very well in 2017 when the market went up nonstop(쉬지 않고). Relying on one’s “trading experience” can be misleading because unless you’ve been trading for 10-20 years, your experience is short. Your strategy might have succeeded so far not because of skill, but because the market’s environment and price pattern thusfar(지금까지) just so happens to fit the strategy you’ve employed.(채용하다)
당신의 재량적 거래 전략이 지금까지 잘 먹혔다고 해도, 어떻게 그것이 효과가 있다는 것을 알 수 있는가? 운이 아닌 기술 때문이다. 예를 들어, 어떤 전략이든 –동전을 던져도 시장이 쉬지 않고 상승했던 2017년에는 매우 잘 먹혔을 것이다. 10~20년간 거래하지 않는 한 경험은 짧기 때문에 자신의 '여행 경험'에 의존하는 것은 오해를 불러일으킬 수 있다. 당신의 전략이 지금까지 성공한 것은 기술 때문이 아니라 시장의 환경과 가격 패턴이 우연히 당신이 채택한 전략에 맞기 때문이다.
That’s where quantitative backtesting comes in. Backtesting allows you to see how well your strategy works under different market environments, including market environments that you haven’t personally experienced yet. In a nutshell(간단하게), backtesting stress-tests(스트레스 테스트하다) your strategy.
여기서는 정량적 백 테스팅이 시작됩니다(그것이 수량적인 백테스팅이 들어오는 곳입니다). 백 테스팅은 통해 아직 개인적으로 경험하지 않은 시장 환경을 포함하여 다양한 시장 환경에서 전략이 얼마나 잘 작동하는지 확인하게 합니다. 간단히 말해서, 백 테스팅은 전략을 스트레스 테스트합니다.
You can easily backtest simple trading models in Excel. But if you want to backtest hundreds or thousands of trading strategies, Python allows you to do so more quickly at scale(규모에 있어서). Moreover, some complicated strategies (e.g. ones that trade hundreds of markets) are hard to backtest in Excel, but are easy to backtest in Python.
당신은 Excel에서 간단한 거래 모델을 쉽게 백테스트할 수 있다. 그러나 수백 또는 수천 개의 거래 전략을 백테스트하고 싶다면, 파이썬은 규모 면에서 더 빨리 그렇게 할 수 있게 해준다. 더욱이 일부 복잡한 전략(예: 수백 개의 시장을 거래하는 전략)은 엑셀에서는 백테스트하기 어렵지만 파이썬에서는 백테스트하기 쉽다.
Optimizing trading models
거래 모델 최적화
Let’s face(직시하다) it – all traders optimize their strategy to a certain extent. While over-optimizing your strategy or trading model is bad, doing some optimizing is still a good idea. Python allows you to optimize your strategy and look for the best indicator parameters with for loops.(반복 실행되는 일련의 명령) While this optimization might take days in Excel, it’ll just take a few minutes with Python.
모든 거래자들이 어느 정도 그들의 전략을 최적화한다는 것을 직시하자. 당신의 전략이나 거래 모델을 지나치게 최적화하는 것은 나쁘지만, 일부 최적화를 하는 것은 여전히 좋은 생각이다. Python은 당신이 당신의 전략을 최적화하고 루프에 대한 최고의 지표 매개변수를 찾을 수 있게 해준다. 이 최적화 작업은 Excel에서 며칠이 걸릴 수 있지만 Python에서는 몇 분이면 될 겁니다.
Automatically executing trades
자동거래실행
And finally, you can use Python to automatically scan for trade setups and execute trades. This will help you save time on a day-to-day basis when it comes to market analysis, and also helps you save them when implementing trades. For example, I’m working on a trading model right now that goes through 2000 stocks and trades 50 stocks at a time. Can you imagine scanning through 2000 charts every day? It would be a nightmare! Moreover, executing each of the 50 trades every single day is very time consuming. It’s far more efficient to allow my program to automatically execute the trading strategy.
마지막으로 Python을 사용하여 거래 설정을 자동으로 검색하고 거래를 실행할 수 있습니다. 이를 통해 시장 분석과 관련하여 매일 시간을 절약하고 거래를 구현할 때 시간을 절약 할 수 있습니다. 예를 들어, 저는 현재 2000 개의 주식을 통과하고 한 번에 50 개의 주식을 거래하는 거래 모델을 만들고 있습니다. 매일 2000 개의 차트를 스캔하는 것을 상상할 수 있습니까? 악몽 일 것이다! 또한 매일 50 개의 거래를 실행하는 데 시간이 많이 걸립니다. 내 프로그램이 자동으로 거래 전략을 실행하도록 허용하는 것이 훨씬 효율적입니다.
Thanks for reading this post! If you don’t know how to code, I highly recommend you learn this skill. Learning Python over the past year has helped my trading dramatically, and there are tons of free resources online or books you can read.
이 글을 읽어줘서 고마워! 코딩을 할 줄 모르면 이 기술을 익힐 것을 적극 추천한다. 지난 1년 동안 파이썬을 배우는 것은 내 거래를 크게 도왔고 온라인 혹은 책에는 당신이 읽을 수 있는 수많은 무료 자원이 있다.
This is a Guest Post by: Troy Bombardia you can follow him on Twitter at @bullmarketsco and he also is a contributor to the sentimentrader.com website.
'거래기술에 관한 정보' 카테고리의 다른 글
Ten Stop Loss Tips:(10가지 중지 손실 팁:) (0) | 2020.03.03 |
---|---|
David Harding Price Action Trading Quotes(데이비드 하딩 가격 행동 거래 견적) (0) | 2020.03.02 |
Why Big Wins & Small Losses = Profitability:(왜 큰 손실과 작은 손실 = 수익성:일까) (0) | 2020.03.01 |
What is FOMO?(FOMO란 무엇인가?) (0) | 2020.02.29 |
Ten Golden Trading Rules That Can Help New Traders(새로운 트레이더에게 도움이 될 수 있는 10가지 황금 거래 규칙) (0) | 2020.02.29 |