Mine cryptocurrency for the blog's owner:
Loading...

출처: https://blog.naver.com/chunjein/100153752874 등


사실, 기술적 분석을 통한 자동매매는 성공하기가 어렵다. 그 이유는 주가의 흐름이 랜덤워크 (Random Walk) 과정이므로, 매매 횟수가 증가할수록 기대 수익은 0 에 수렴하기 때문이다 (마팅게일 성질). 게다가 거래 비용까지 고려하면 기대 수익은 0 보다 작아지게 된다. 기술적 분석의 지표는 과거 패턴을 해석하고 이해하는 데는 도움이 되지만, 미래를 예측하는 도구가 되기는 어려우므로, 이것을 통한 자동매매로는 수익을 내기가 어렵다 (주-1).


이 전략은 필자가 2년 전에 약 3개월 간 시험해 본 전략으로, 볼린저 밴드뿐만 아니라 MACD, Golden/Dead Cross 등의 전략으로 조건을 수 없이 바꾸어 가면서 시험해 보았던 전략이다. 어느 조건에서도 수익을 낼 수가 없었다. 손실도 거의, 비용 = 거래수수료 + 호가 스프레드만큼 발생 하였다. 거래 횟수가 증가할수록 비용을 제외한 손익은 0 에 수렴하였고, 모든 손실은 거래 수수료와 호가 스프레드에서 발생하였다.


기술적 분석 파라메터들의 조건을 바꾸어도 위의 결과는 변함이 없었다. 심지어 콜 옵션을 볼린저 밴드의 상한선에서 매수하고, 하한선에서 매도하여도 손실이 더 커지거나, 더 줄어들지 않고, 딱 비용만큼의 손실이 발생하였다. 또한 기술적 분석을 사용하지 않고 랜덤 (Random) 하게 매매를 해도 결과는 유사하였다. 거래 횟수가 증가할수록 기술적 분석에 의한 매매 결과나, 랜덤하게 매매한 결과가 유사하다는 것은, 기술적 분석에서 사용하는 기술적 지표들이 자동매매에는 별로 도움이 되지 못한다는 것을 의미한다. 그 이유는 단기 주가의 흐름이 Random Walk 과정이므로, 어떤 지표로도 그 흐름을 미리 예측할 수 없기 때문이다.


이 전략도 필자가 전에 수 차례 시험해본 것으로, 도저히 수익을 낼 수가 없었던 전략이다. 패턴 분석을 추가하던지, 추가하지 않던지 상관없이, 기술적 분석을 이용한 Naked 매매와 동일한 결과가 나왔었다. 따라서 패턴 분석이 알고리즘 방향성 트레이딩에 전혀 도움을 주지 못하였다.


여기까지 기술적 분석이나, 패턴 분석 등 방향성 투자에 대한 알고리즘 트레이딩에 대해 간단히 살펴보았다. 포스트는 간단히 하였지만 그동안 나름대로 많은 시도를 해본 결과, 필자의 실력으로는 알고리즘에 의한 방향성 트레이딩은 성공하기가 어렵다는 결론을 내게 되었다. 물론 기술적 분석이나, 패턴 분석 분야에 전문가가 있을 수 있고, 알고리즘으로 꾸준히 수익을 내는 분들이 있을 수 있겠으나, (만약 있다면) 그건 그분들의 전문적인 지식, 꾸준한 노력, 오랜 경험, 위험에 대한 대가 등, 이론적으로 설명할 수 없는 어떤 것들을 통해 얻어진다고 밖에 볼 수 없다.


필자가 경험해본 알고리즘 방향성 트레이딩은 이정도로 하고, 다음 포스트부터는 방향성 투자가 아닌 알고리즘 페어트레이딩이나 알고리즘 차익거래 등에 대해 살펴보도록 하겠다. 






Posted by steloflute

Python virtualenv 정리 (Linux/Windows)

출처: https://dgkim5360.tistory.com/entry/python-virtualenv-on-linux-ubuntu-and-windows [개발새발로그]


https://dgkim5360.tistory.com/entry/python-virtualenv-on-linux-ubuntu-and-windows



python의 가상환경 virtualenv 모듈의 사용법을 간단하게 정리한다. python의 가상환경이란, 작은 python을 새로 설치해서 내가 원하는 모듈만 운용하는 바구니라고 생각하면 된다. 운영체제 안에서 새로 운영체제를 만들어내는 가상 머신(virtual machine)과 같은 맥락이라고 볼 수 있다. 같은 모듈이라도 이 버젼 저 버젼 다른 버젼이 필요할 때나, python 프로그램을 실행하기 위한 최소한의 환경을 마련하고자 할 때, 그리고 github 등의 저장소와 연계하고자 할 때 등 가상환경은 매우 다양하게 사용될 수 있다. 이젠 필수적인 요소가 된 python 가상 환경의 리눅스/윈도우에서의 사용법을 정리한다. (본인이 윈도우에서 쓰려고 할 때마다 까먹어서....)


리눅스(ubuntu) 환경

ubuntu의 현재 최신 LTS 버젼인 ubuntu 16.04 LTS는 운영체제에 기본적으로 python 2.7 버젼과 3.5 버젼이 모두 탑재되어있다. 그리고 각 버젼의 실행은 다음 명령어를 통해 할 수 있다.


$ python
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

$ python3
Python 3.5.2 (default, Sep 10 2016, 08:21:44)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

그리고 python과 함께 딸려오는 것이 있는데 pypi (python package installer)이다. pip install ... 로 익숙한 그것이다. 마찬가지로 python 버젼에 따라 다음과 같이 실행하고 --version 옵션을 통해 그 버젼을 확인해볼 수 있다.


$ pip --version
pip 8.1.2 from /home/user/.local/lib/python2.7/site-packages (python 2.7)
$ pip3 --version
pip 8.1.2 from /home/user/.local/lib/python3.5/site-packages (python 3.5)

그럼 이제 가상환경을 사용하기 위한 가상환경 모듈 virtualenv를 설치하자. 아마도 sudo와 함께 써야할 것이다.


# python 2.7
$ pip install virtualenv

# python 3.5
$ pip3 install virtualenv

이제 virtualenv가 설치되었고, 바로 쉘에서 다음과 같이 가상환경을 시작할 수 있다.


$ virtualenv venv
Running virtualenv with interpreter /usr/bin/python
New python executable in /home/don/venv/bin/python
Installing setuptools, pip, wheel...done.

위 작업이 완료되면 내가 지정했던 venv라는 폴더가 생성되고 그 안에 새로 python이 설치되어있음을 알 수 있다. 이제 venv를 가동시키고, 정말로 새로운 python 환경이 생겼는지 확인해보겠다.


$ source venv/bin/activate
(venv) $ pip list
pip (8.1.2)
setuptools (28.7.1)
wheel (0.30.0a0)

여기서 두 가지를 확인할 수 있다. 첫 번째로, source 명령어를 통해 venv 가상환경의 activate를 실행하니 그 다음부터는 쉘 명령창 앞부분에 (venv)가 따라 붙어다니는 것을 볼 수 있다. 이는 이제부터 venv 가상환경 안에 있는 거라고 말해주는 것이다. 두 번째로, venv 안에서 설치된 모듈을 pip list 명령을 통해 확인한 결과... 아무것도 없다는 것이다. pip, setuptools, wheel은 가상환경을 시작할 때 기본으로 설치된 것이다. (이미 pip list를 쓰고 있지 않은가)

한 가지 궁금증이 생길 법한 것이 있는데, 다시 한 번 버젼 문제이다. 2버젼, 3버젼의 python 가상환경을 쓰려면 어떻게 해야하나? 다음과 같은 방안을 쭉 나열해본다. 맘에 드는 방법으로 쓰면 된다.


# python 2
$ python -m virtualenv venv
$ virtualenv venv --python=python
$ virtualenv venv --python=python2.7

# python 3
$ python3 -m virtualenv venv
$ virtualenv venv --python=python3
$ virtualenv venv --python=python3.5

이제 내가 사용하고자 하는 모듈을 맘대로 설치하면 된다. 그 설치한 목록은 다음 명령어를 통해 정확한 리스트로 저장해두자.


(venv) $ pip freeze > requirements.txt

이제 requirements.txt 파일에서 설치된 모듈과 그 버전이 리스트되어 저장되어 있음을 알 수 있다.

가상환경을 나가고 싶으면 간단히 deactivate라고 명령하면 된다.


윈도우 환경

사실 윈도우라고 다를 것은 없다. 기본적으로 python을 설치하면, 자동적으로 pypi가 함께 설치되기 때문에 위 리눅스일 때와 동일하게 virtualenv를 설치하고 시작할 수 있다.


> pip install virtualenv
> virtualenv venv

이제 activate해야 하는데, 여기서는 source 대신 call


> call venv/scripts/activate
(venv) > pip list

가상 환경이 잘 시작되었음을 확인할 수 있을 것이다.



출처: https://dgkim5360.tistory.com/entry/python-virtualenv-on-linux-ubuntu-and-windows [개발새발로그]

Posted by steloflute

https://blog.naver.com/linkstock/206766416

Posted by steloflute


Generate bitcoin for me

What's this?