Friday, 9 February 2018

유전 전기 네트워크 거래 시스템


양적 거래.


양적 투자 및 거래 아이디어, 연구 및 분석.


2015 년 10 월 16 일 금요일.


오픈 소스 유전자 알고리즘 소프트웨어 (Guest post)


최근 Genotick은 거래 시스템 그룹을 만들고 관리 할 수있는 오픈 소스 소프트웨어입니다. Genotick의 핵심은 한마디로 중요한 요소입니다. 소수의 어셈블러 지침만으로 소프트웨어를 만들 수 있다면 비슷한 간단한 지침을 사용하여 거래 시스템을 만들 수 있어야합니다. 이렇게 간단하고 의미가없는 명령어는 함께 사용될 때 매우 강력 해집니다. 올바른 순서의 올바른 지침은 추세 추적, 평균 복귀 또는 기본 데이터를 기반으로하는 모든 유형의 기계 시스템을 만들 수 있습니다.


유전자 알고리즘 기반의 거래 시스템 설계.


Richard Tymerski의 저자 Ethan Ott Garrison Greenwood.


우리는 유전 알고리즘 (GA)을 사용하여 거래 시스템의 설계를 조사합니다. 기술 지표는 진입 및 퇴출 규칙을 정의하는 데 사용됩니다. 지표 및 관련 매개 변수의 선택은 정수 값에 대해서만 작동하는 GA에 의해 최적화됩니다. 지주 시간 및 이익 목표 종료 규칙도 평가됩니다. 이익 목표와 결합 된 승률 확률과 샤프 비율에 기초한 적합도 함수는 전반적인 이익뿐만 아니라이기는 거래의 백분율을 극대화하는 데 유용하다는 것을 알 수 있습니다. 구매 및 보유가 매우 경쟁력있는 전략이 개발됩니다.


참조.


저작권 정보.


저자 및 제휴사.


Richard Tymerski 1 명의 저자 Ethan Ott 1 Garrison Greenwood 1 1. 전기 및 전자 공학과 (Department of Electrical & amp; 컴퓨터 공학 포틀랜드 주립 대학 포틀랜드.


이 백서에 대해서.


개인화 된 권장 사항.


종이를 인용하십시오.


.RIS 논문 참조 관리자 RefWorks Zotero.


.BIB BibTeX JabRef Mendeley.


용지를 공유하십시오.


즉시 다운로드 모든 장치에서 읽을 수 있음 영원히 소유 가능 해당되는 경우 현지 판매 세 포함.


종이를 인용하십시오.


.RIS 논문 참조 관리자 RefWorks Zotero.


.BIB BibTeX JabRef Mendeley.


용지를 공유하십시오.


손끝에서 천만 가지 이상의 과학적 문서를 제공합니다.


전환 판.


&부; 2017 Springer International Publishing AG. 스프링거 자연의 일부입니다.


유전자 프로그래밍을 통한 무역 전략 진화.


친구와 저는 최근에 유전학 프로그래밍 (GP)을 사용하여 실제 금융 분류 문제에 대한 해결책을 개발 한 연구 과제에 함께 협력했습니다. 보안 분석이라고하는이 문제는 장래에 좋은 투자 수익 (ROI)을 실현하기 위해 매입해야 할 증권을 결정하는 것과 관련이 있습니다. 이 문제에 대한 해결책을 찾기 위해 Genetic Programming을 사용하여 S & amp; P 500에 나열된 기술 주식 62 개에 대한 보안 분석을 수행 할 수있는 의사 결정 트리를 개발했습니다. 즉, 해당 주식을 분류 할 수있는 의사 결정 트리를 발전 시켰습니다 구매 또는 판매 부족 여부에 따라


보안 분석 결정 트리.


연구 중에 우리는 두 가지 유형의 보안 분석 결정 트리를 발전 시켰습니다. 첫 번째는 기본 분석의 지표만을 사용했으며 두 번째는 기술적 분석의 지표만을 사용했습니다. 기본 분석은 관련 경제적, 재정적 및 기타 질적 및 양적 요인을 검토하여 본질적인 가치를 측정하기 위해 보안을 평가하는 방법입니다. 기술적 분석은 시장 활동에 의해 생성 된 통계를 분석하여 증권을 평가하는 방법입니다.


보안 분석을위한 전략은 기술 또는 근본 지표를 사용하는지 여부에 관계없이 투자 결정을 내리는 데 필요한 여러 가지 규칙으로 구성됩니다. 이 전략은 터미널 노드가 투자 결정을 나타내고 의사 결정 노드는 기술 또는 기본 지표를 기반으로하는 규칙을 나타내는 의사 결정 트리로 나타낼 수 있습니다. 이 사실로 인해 많은 기존 투자 전략이 의사 결정 나무 형태로 나타납니다.


기술적 분석과 기본 분석 모두에서 총 40 개의 서로 다른 지표가 선택되어 사용되었습니다. 진화 된 전략은 3 개월, 6 개월, 9 개월 또는 12 개월이라는 고정 된 유지 기간 동안이었습니다. 의사 결정 나무는 2011 년부터 2013 년까지의 시장 데이터를 사용하여 다시 테스트되었습니다.


유전 프로그래밍.


유전 프로그래밍은 유전 알고리즘의 전문화입니다. 유전 알고리즘 (Genetic Algorithms)은 많은 사람들이 모여 사는 인구 집단 내에서 운영된다는 것을 의미하는 인구 기반입니다. 각 개체는 고유 한 유전자형 (대개 벡터로 인코딩 됨)으로 나타납니다. 유전 알고리즘은 적자 생존을 모델링하는 선택 연산자, 성적 복제를 모델링하는 교차 연산자 및 인구의 개인에게 무작위로 발생하는 유전자 변이를 모델링하는 돌연변이 연산자를 비롯한 많은 연산자를 통해 유전 적 진화 과정을 모델링합니다. 이 연산자를 결합하면 컴퓨터 과학자가 유전 알고리즘이라고 부르는 것을 생성합니다.


벡터 (블럭) 집단에 적용되는 유전 알고리즘의 세 연산자는,


유전자 알고리즘과 유전자 프로그래밍 알고리즘의 차이점은 개별 유전자형이 표현되는 방식입니다. Genetic Algorithms에서는 genotypes가 String이나 Vectors로 표현되는 반면, Genetic Programming에서는 이러한 genotypes가 트리 데이터 구조를 사용하여 표현됩니다. 트리 구조에 대한 교차 작업은 몇 가지 방법으로 수행 할 수 있습니다. 하위 트리를 스왑 아웃하거나 리프 노드를 제거 또는 변경하거나 일부 노드의 값을 조정할 수 있습니다. 이 그림은 아래에 나와 있으며,


이 다이어그램은 보안 분석을 위해 유전 프로그래밍에 사용되는 의사 결정 트리의 크로스 오버 전략을 보여줍니다.


이 연구를 통해 우리는 유전 적 프로그래밍이 건강 분석 계산 및 투자 관리를위한 새로운 전략을 발전시킬 수있는 큰 잠재력을 갖고 있다고 판단하여 적합성 계산을위한 더 나은 기능을 도출 할 수있었습니다. 우리 연구 조사를 통해 우리는 유전 프로그래밍을 사용하여 진화 된 의사 결정 나무가 모든 4 분기에 걸쳐 평균 시장 수익률을 일관되게 이길 수있는 주식 분류를 산출 할 수 있음을 확인했습니다. 이는 기술적 인 지표와 기본 지표를 사용하는 의사 결정 트리를 사용한 의사 결정 트리에서도 마찬가지입니다. 의사 결정 나무의 최적 크기와 이질성 수준, 서로 다른 지표로 부가 된 가치와 서로 상대적인 전략의 수행을 포함하여 우리의 연구로부터 여러 다른 결론이 도출되었습니다. 몇 가지 결과가 아래에 포함되어 있습니다.


의사 결정 트리의 크기와 적합도 간의 관계 최종 의사 결정 트리에서 사용되는 가장 널리 사용되는 지표.


반복 당 평균 트리 크기 예제 보안 분석 의사 결정 트리 예 보안 분석 의사 결정 트리.


결론.


두 개의 독립적 인 연구 보고서가 나와 내 친구에 의해 만들어졌습니다. 두 보고서는 우리의 연구 연구, 취해진 접근법, 설계 및 구현, 사용한 테스팅 전략, 추가 연구를위한 결론 및 권고 사항에 대해 훨씬 자세히 설명합니다. 구현 중에 작성된 소스 코드의 사본을 다운로드 할 수도 있습니다. 제 동료가 프로젝트에 대한 기술적 인 설명을 보려면 여기를 클릭하십시오.


이전 이야기.


개미 식민지 최적화를 사용한 클러스터링.


다음 이야기.


지능형 알고리즘 트레이딩 시스템.


[LinkedIn 전산 금융 그룹 (Computed Finance Group)의 코멘트]


아주 좋은 작품. 쓰기도 멋지다.


나는 그 보고서를 볼 기회가 있었다. 살펴볼 수있는 몇 가지 통계 : GA 포트폴리오를 동일한 자산의 포트폴리오와 비교하면 어떻습니까? 동등한 가중 포트폴리오와 시가 총액으로 가중 된 S & amp; P 스타일 포트폴리오의 두 가지 비교 포트폴리오를 살펴 보겠습니다.


결과적으로 똑같이 중요도가 높은 포트폴리오를 우회하는 것은 놀랄 정도로 어려울 수 있습니다. 일부 주식은 올라갈 것이고 일부는 내릴 것이므로 (예 : 포트폴리오 가중치를 가격이 변함없이 동일하게 유지하려는 경우) 분기별로 포트폴리오를 조정하십시오. 당신의 유전자 알고리즘이 이러한 포트폴리오를 능가한다면 당신은 "알파"(벤치마킹에 비해 초과 수익)를 얻게됩니다.


물론 알파는 모든 것이 아닙니다. GA 포트폴리오와 "벤치 마크"모두에 대한 예상 테일 손실 (ETL) (CVaR, 기대 부족)을 살펴보아야합니다. 동일한 수익에 대한 위험이 적은 경우 벤치 마크를 초과했다고 생각할 수 있습니다. Sharpe 비율은 분산을 측정하기 때문에 ETL 측정 값은 Sharpe 비율보다 더 좋은 측정 값입니다. 이는 양면입니다. ETL은 손실만을 측정합니다.


관찰 : GA 및 신경망 (NN)의 문제점은 블랙 박스라는 것입니다. 그들이 그들이하는 "선택"을하는 이유를 결정하는 것은 어렵습니다. 그래서 당신이 포트폴리오 매니저라고 상상해보십시오. GA 또는 NN 실적이 저조합니다. 이 문제를 해결하기 위해 어떤 단계를 취할 수 있습니까? 문제는 재 훈련이 실제로 할 수있는 것이고 재 훈련이 더 잘 될지 모른다는 것입니다. 물론 의사 결정 트리를 사용하면 그 의사 결정이 무엇인지 알기 때문에 매우 나쁘지는 않습니다. 문제는, "옳은"결정을 내리기 위해 끊임없이 두들기를 묶어두면 문제가 있다는 것입니다.


이러한 문제는 이러한 알고리즘이 많이 사용되는 것을 보지 못하는 이유입니다 (사용되었지만).


[LinkedIn Computational Finance Group에서 보낸 응답]


칭찬의 말인 Ian에게 감사드립니다. 우리 연구에 관심을 갖고 통찰력있는 의견을 보내 주셔서 감사합니다.


우리의 접근법에서 우리는 의사 결정 나무에 의해 만들어진 주식 선택의 성과를 동등하게 가중 된 포트폴리오와 비교했습니다. 서로 다른 포트폴리오를 통합하기 위해 연구를 확장하는 것은 다음 개발 단계에서 후속 조치를 취하는 흥미로운 아이디어입니다. 우리는 보안 분석을위한 추가적인 성능 벤치 마크로 사용되는 몇 가지 잘 알려진 접근법을 구현하는 것을 고려 중입니다. 귀하 또는 다른 사람들이 어느 접근법이 좋은 벤치 마크를 만들지에 대한 제안이 있으면 알려주십시오.


다른 성능 측정 도구 사용에 대한 귀하의 의견은 중요합니다. 우리는 분명히 백 테스트 프레임 워크를 다시보고 더 엄격하고 지나치게 맞지 않는 방식을 연구하려고합니다. 우리는 또한 포트폴리오 위험 측정 및 초과 수익 (alpha) 측정을 고려한 추가 피트니스 기능을 구현하고자합니다. 내가 언급 한 방법을 살펴보고 기존 프레임 워크에 이들을 가장 잘 통합 할 수있는 방법을 알아 봅니다. 우리는 또한 콴토 피안 (Python)이 사용하는 백 테스트 프레임 워크 인 ZipLine과 같은 오픈 소스 백 테스트 프레임 워크를 어떻게 사용할 수 있는지 고려할 것입니다.


GA에서 신경 네트워크의 특성과 사용에 관한 귀하의 관찰은 매우 흥미 롭습니다. 이러한 알고리즘을보다 투명하게, 솔직히 말하면 조금 덜 무서운 것으로 만드는 도전은 가볍게 받아 들여지지 않는 것입니다. 내 동료는 현재 신경 네트워크의 내부 동작에 대한 베일을 들어 올리려는 연구 과제를 수행하고 있습니다. 그가 성공하면 '뭔가 잘못되었다'는 신경망을 지속적으로 재 훈련 할 필요없이 신경망에서 문제의 원인을 격리하고 그에 따라 아키텍처를 조정할 수 있습니다. 그는 자신의 연구에서 신경망의 실제 금융 응용 프로그램 사용을 고려하고 있습니다. 그것에 대해 알고 싶다면 저에게 알려주세요.


개인적으로 말하자면, 현재 캐리 트레이드 포트폴리오 선택 및 최적화를위한 알고리즘 프레임 워크를 구축하려는 연구 과제를 수행하고 있습니다. 몇 가지 전산 알고리즘을 사용하고 앞으로 언급 한 문제를 염두에 두겠습니다. 나는 프레임 워크에서 그러한 우려를 완화하거나 제거하는 방법을 찾아 낼 것입니다. 의견을 보내 주셔서 다시 한 번 감사드립니다. 더 좋은 아이디어가 있으시면 저희에게 연락하십시오.


[LinkedIn 전산 금융 그룹 (Computed Finance Group)의 코멘트]


나는 backtesting을위한 가장 합리적인 접근법이 결과를 당신이 포트폴리오에 부과하고있는 제약 조건을 여전히 따르는 무작위 거래와 어떻게 비교할 것인가라고 생각합니다. 이에 대해서는 다음에서 논의됩니다.


[LinkedIn Computational Finance Group에서 보낸 응답]


감사합니다 패트릭, 그건 좋은 제안입니다. 랜덤 검색 전략에 대한 알고리즘 백 테스팅 개념은 개념적으로 무작위 검색에 대한 검색 알고리즘 테스트와 유사하기 때문에이 방법을 이해합니다. 나는 전에 한 짓입니다. 백 테스트 전략이 얼마나 인기가 있다고 생각하십니까?


[LinkedIn Computational Finance Group에서 보낸 응답]


스튜어트 : 우울하게 인기가 없습니다. 그러나 그것은 어딘가에서 시작해야합니다.


[LinkedIn 전산 금융 그룹 (Computed Finance Group)의 코멘트]


62 종의 기술주를 사용하는 이유는 무엇입니까?


[LinkedIn 전산 금융 그룹의 응답 사본]


안녕하세요. JZ, 좋은 질문입니다. 기쁘게 생각합니다. 우리는 우리의 접근 방식을 논의했고 외부 의견은 많이 감사 할 것입니다. 다음 두 가지 이유로 테스트 샘플을 한 섹터로 제한했습니다.


1) 우리는 기본 지표를 사용하는 의사 결정 나무가 다른 산업간에 크게 다를 수 있다고 생각합니다. 재무 비율은 각기 다른 산업 분야마다 다를 수 있으며, 우리는이 접근 방식을 사용하는 투자자가 각 부문 별 의사 결정 트리를 독립적으로 발전시키고 자한다고 생각했습니다.


2) 우리는 임무를 완수하기 위해 3 주만 주어진 반면 더 많은 주식을 추가하는 것은 너무 많은 시간이 소요될 것이라는 우려가있었습니다. 우리의 시행으로 S & amp; P500의 500 종목을 쉽게 처리 할 수 ​​있었기 때문에 이것은 중요한 근거가되지 않았습니다.


** 참고 : 이는 기술 분석 지표를 사용하는 의사 결정 트리에는 적용되지 않습니다.


매우 흥미 롭습니다. 잘 스튜어트.


흥미로운 운동이지만 GP가 단순히 불순물 측정을 사용하여 전체 의사 결정 트리를 교육하는 것에 비해 어떤 이점이 있는지 알지 못합니다. 그것은 매우 비효율적으로 그리고 아마 정확도가 떨어지는 것처럼 보입니다.


안녕하세요 Ignas, 완벽하게 정직한 GP가 많은 단점을 앓고 있으며 그 기술은 아직 완성되고 있습니다. 기존의 의사 결정 트리 유도 방법 (나는 최근에 팬이다)에는 유전 프로그래밍이 극복 할 수있는 (또는하지 않을 수도있는) 단점이있다.


파이썬에서 GA를 다시 구현하려고합니다. 어떤 파이썬 라이브러리를 권하고 싶습니다.


시스템을 실시간으로 교환하려 했습니까?


Hi Lawrence, 불행히도. 이 게시물은 상당히 오래된 세이며, 내 옛날 대표팀 프로젝트를 대표합니다 :-). 편견없는 유전 프로그래밍 기반의 거래 전략을 위해 Genotick을 살펴 보는 것이 좋습니다. 나는 사람들이 그것을 사는 것으로 믿고있다.


댓글을 제출하십시오.


답장 취소.


Turing Finance를 팔로우하십시오.


Turing 금융 메일 링리스트.


Turing Finance의 친구들.


Quantocracy는 매일 매일 게시되는 새로운 분석에 대한 링크가있는 최고의 양적 금융 블로그 수집기입니다.


NMRQL은 내가 속한 양적 헤지 펀드 다. 우리는 기계 학습을 사용하여 시장을 이기고 시도합니다.


스노우 크론.


무료 E. Mail 클래스.


유전 알고리즘을 사용하여 수익성있는 외환 거래 전략 수립. Cortex Neural Networks 소프트웨어의 유전자 알고리즘 Feedforward Backpropagation 신경 회로망 유전학 계산을 기반으로 한 Forex 거래 응용 프로그램입니다.


이 예제는 이전 기사의 개념과 아이디어를 사용하므로 FOREX Trading Systems의 신경망 유전자 알고리즘을 먼저 읽으십시오. 필수 사항은 아니지만 먼저이 기사를 읽으십시오.


이 원본에 관하여.


먼저 면책 조항을 읽어보십시오. 이것은 Cortex Neural Networks 소프트웨어 유전 알고리즘 기능을 사용하는 예입니다. 수익성있는 거래를 수행하는 방법의 예는 아닙니다. 나는 당신의 전문가가 아니며, 귀하의 손실에 대해 책임지지도 않습니다.


Cortex Neural Networks 소프트웨어는 신경망을 가지고 있으며, 앞서 논의한 FFBP는 외환 거래 전략을 선택하는 유일한 방법 일뿐입니다. 그것은 강력하고 적절한 적용을하면 훌륭한 기술입니다. 그러나 신경망을 가르치기 위해서는 "원하는 결과물"을 알아야합니다.


우리가 함수 근사를 할 때 수행하기가 쉽습니다. 함수의 "실제"값을 취합니다. 왜냐하면 우리는 그것이 무엇인지 알아야하기 때문입니다.


우리가 신경망 예측을 할 때, 신경망을 역사에 가르치는 기술 (이전 기사에서 설명한)을 사용합니다. 다시 말하면, 환율을 예측하면 정확한 예측이 무엇인지 (훈련 중에) 알 수 있습니다. .


그러나 우리가 거래 시스템을 구축 할 때 환율을 안다고하더라도 올바른 거래 결정이 무엇인지 알 수 없습니다! 사실상, 우리는 언제든지 사용할 수있는 많은 외환 거래 전략을 가지고 있으며, 좋은 방법을 찾아야합니다 - 어떻게? 우리는 신경망의 원하는 결과물로 무엇을 공급해야합니까?


우리가 이전 기사를 읽었다면, 우리는이 문제를 해결하기 위해 속임수를 쓰고 있다는 것을 알고 있습니다. 우리는 신경망에 환율 (또는 환율 기준 지표) 예측을 수행하도록 강의 한 다음이 예측을 거래에 사용했습니다. 그런 다음, 프로그램의 신경망 부분을 벗어나서, 우리는 어떤 신경 네트워크가 최선인지 결정했습니다.


유전자 알고리즘은이 문제를 직접 처리 할 수 ​​있으며 "최상의 거래 신호 찾기"라는 문제를 해결할 수 있습니다.


이 기사에서는 그러한 프로그램을 작성하기 위해 Cortex 신경망 소프트웨어를 사용할 것입니다.


유전 알고리즘 사용.


유전자 알고리즘은 매우 잘 개발되어 매우 다양합니다. 이 기사는 Cortex Neural Networks 소프트웨어가 수행 할 수있는 것에 관한 내용이므로 Wikipedia를 사용하는 것이 좋습니다.


Cortex Neural Networks 소프트웨어를 사용하면 표시기의 값을 입력 받아 몇 가지 출력, 즉 거래 신호 (구매, 판매, 보류)를 생성하고 위치에 대한 손실 / 이익 수준을 정지시키는 신경망을 만들 수 있습니다 열릴.


물론 우리가이 신경망의 가중치를 무작위로 분류하면 거래 결과는 끔찍합니다. 그러나 그런 NN을 12 개 만들었다 고 가정 해 봅시다. 그런 다음 각 팀의 실적을 테스트하고 최고의 팀을 선정 할 수 있습니다.


이것이 NN의 "1 세대"였습니다. 2 세대를 계속하려면 우승자가 "창작"할 수 있도록해야하지만, 동일한 사본을 얻는 것을 피하기 위해 자손의 가중치에 임의의 노이즈를 추가하십시오.


2 세대에서는 1 세대 우승자가 있으며 불완전한 사본입니다. 다시 테스트 해 봅시다. 우리는 또 다른 승자를 얻게 될 것인데, 그 세대의 다른 신경 네트워크보다 더 낫습니다.


등등. 우리는 단순히 승자가 번식하고 실재 진화와 마찬가지로 패자를 없애기 때문에 거래 시스템 (유전 알고리즘)이 어떤 것인지에 대한 사전 지식 없이도 최상의 거래 신경망을 얻을 수 있습니다.


신경망 유전자 알고리즘 : 예 0.


이것은 최초의 유전자 알고리즘 예제이고, 아주 간단한 알고리즘입니다. 우리는 예제를 통해 사용할 모든 트릭을 배우기 위해 단계별로 살펴볼 것입니다.


코드에는 인라인 코멘트가 있으므로 중요한 순간에만 집중하겠습니다.


첫째, 우리는 신경망을 만들었습니다. 그것은 무작위 무게를 사용하고 있으며, 아직 가르쳐지지 않았습니다.


그런 다음 주기적으로 MUTATION_NN fumction을 사용하여 14 개의 복사본을 만듭니다. 이 함수는 소스 뉴럴 네트워크의 복사본을 만들어 0부터 (이 경우) 0.1의 무작위 값을 모든 가중치에 더합니다.


핸들은 15 개의 NN을 배열로 유지합니다. handle은 정수형이므로 처리 할 수 ​​있습니다.


우리가 15 개의 NN을 사용하는 이유는 거래와는 아무런 관련이 없습니다. Cortex Neural Networks 소프트웨어는 최대 15 개의 라인을 동시에 차트에 표시 할 수 있습니다.


우리는 테스트에 대해 다른 접근법을 사용할 수 있습니다. 첫째, 학습 집합을 한 번에 사용할 수 있습니다. 두 번째로, 우리는 말하자면, 12000 명 (100000 명 중)의 여덟 명을 테스트 할 수 있으며 처음부터 끝까지 학습 세트를 살펴볼 수 있습니다. 그것은 learnigs를 다른 것으로 만들 것입니다, 우리가 신경 네트워크의 모든 특정 부분에 수익성이 있는지, 전체 집합에 대해서만 찾을 것입니다. 두 번째 방법은 데이터가 처음부터 끝까지 변하면 문제를 일으킬 수 있습니다. 그러면 네트워크가 진화하여 데이터 세트의 끝에서 거래 할 수있는 능력을 얻게되고 처음부터 거래 할 능력을 잃게됩니다.


이 문제를 해결하기 위해 데이터에서 12000 개의 레코드 조각을 무작위로 추출하여 신경망에 공급합니다.


아래에서는 각 네트워크에 대해 하나씩 하위 가중치를 추가합니다. 사실 돌연변이 tange에 대한 0.1이 유일한 선택은 아니며, 이 매개 변수조차 유전 알고리즘을 사용하여 최적화 할 수 있습니다.


새로 생성 된 NN은 15 개의 기존 NN 뒤에 추가됩니다. 이렇게하면 배열에 30 개의 NN이 있고 15 개의 기존 노드와 15 개의 NN이 있습니다. 그런 다음 두 번째 세대의 패자를 죽이기 위해 테스트의 다음 사이클을 수행 할 것입니다.


테스트를 수행하기 위해 데이터에 신경망을 적용하고 출력을 생성 한 다음이 출력을 사용하여 거래를 시뮬레이션하는 테스트 함수를 호출합니다. 거래 결과는 어떤 NN이 최선인지를 판단하는 데 사용됩니다.


nStart에서 nStart + nLearn까지 nLearn 레코드의 간격을 사용합니다. 여기서 nStart는 학습 집합 내의 임의의 지점입니다.


아래의 코드는 트릭입니다. 우리가 사용하는 이유는 유전 알고리즘이 유전 알고리즘을 만들 수 있다는 사실을 설명하는 것입니다. 그러나 그것은 반드시 최선의 알고리즘이 될 필요는 없으며 또한 학습에 대한 제한을 암시한다면 우리가 결과를 향상시킬 수 있다고 제안 할 것입니다 방법.


가능한 한, 우리의 거래 시스템은 긴 거래에서 아주 잘 작동하고, 짧은 거래에서는 매우 가난합니다. 말하자면, 긴 거래가 아주 좋은 경우, 이 유전 알고리즘은 짧은 거래에서 큰 손실을 입더라도 승리 할 수 ​​있습니다.


이를 방지하기 위해 우리는 홀수의 긴 거래에 더 많은 가중치를 할당하고 짝수주기의 짧은 거래에 할당합니다. 이것은 단지 예일 뿐이며 어떤 것을 개선 할 것이라는 보장은 없습니다. 아래에서 수정에 대한 논의에서 더 자세히 설명합니다. 기술적으로, 당신은 그것을 할 필요가 없거나 그것을 다르게 할 수 있습니다.


정렬 된 배열에 이익을 추가하십시오. 그것은 삽입 위치를 반환하고, 그런 다음이 위치를 사용하여 신경망 핸들을 추가하고 정렬되지 않은 배열에 이익을 학습하고 테스트합니다. 이제 우리는 이익과 동일한 배열 인덱스에서 현재 신경 네트워크에 대한 데이터를 얻었습니다.


아이디어는 수익성별로 정렬 된 NN 배열에 도달하는 것입니다. 어레이는 이익에 따라 분류되기 때문에 수익이 적은 네트워크의 1/2을 제거하려면 NN 0 ~ 14 만 제거하면됩니다.


거래 결정은 Neural Network 신호의 가치에 기반하며, 이 관점에서 프로그램은 이전 기사의 예와 동일합니다.


FOREX 무역 전략 : 예 0을 논의하십시오.


먼저 차트를 살펴 보겠습니다. 첫 번째 반복 동안 수익에 대한 첫 번째 차트는 전혀 좋지 않습니다. 신경망이 손실됩니다 (이미지 폴더에서 첫 번째 반복 후 이미지 evolution_00_gen_0.png이 복사 됨).


사이클 15에서 이익을 얻는 이미지가 더 좋으며 때로는 유전 알고리즘이 매우 빠르게 배울 수 있습니다.


그러나 채도가 수익 곡선에 표시됩니다.


커브 번호 3은 항상 같은 신경망을위한 것이 아니라, 항상 태어나고 종료된다는 점을 명심하면서 개인 이익이 어떻게 변하는지를 보는 것이 흥미 롭습니다.


또한 외환 거래 시스템이 부족한 경우 짧은 거래에서 실적이 좋지 않으며, 그 기간 동안 유로화에 비해 달러가 떨어지고 있다는 사실과 관련이있을 수도 있고 아닐 수도있는 long에서 훨씬 잘 수행됩니다. 또한 지표의 매개 변수와 관련이있을 수 있습니다 (아마도 반바지에 다른 기간이 필요합니다). 지표의 선택이 필요할 수 있습니다.


다음은 92 사이클과 248 사이클 후의 역사입니다.


놀랍게도 유전 알고리즘은 완전히 실패했습니다. 왜, 어떻게 상황을 돕는 지 알아 내려고합시다.


우선, 각 세대가 이전 세대보다 낫지 않다고 생각하지 않습니까? 대답은 아니오입니다. 적어도 우리가 사용한 모델은 아닙니다. 한 번에 전체 학습을 설정하고 NN을 가르치기 위해 반복적으로 사용하면 그렇습니다. 각 세대마다 향상 될 것입니다. 그러나 대신 우리는 무작위적인 조각 (시간에 12000 개의 레코드)을 가져 와서 사용했습니다.


두 가지 질문 : 시스템이 무작위로 설정된 학습 집합에서 실패한 이유는 무엇입니까? 왜 전체 학습 집합을 사용하지 않았습니까? 잘. 두 번째 질문에 대답하기 위해, 나는했다. NN은 학습 세트에서 크게 성과를 냈습니다. 테스트 세트에서 실패했습니다. FFPB 학습을 사용할 때와 동일한 이유로 실패합니다. 다른 말로 표현하자면, 우리의 NN은 과도하게 특화되어 왔고, 익숙하지 않은 환경에서 생존하는 법을 배웠습니다. 이것은 자연에서 많은 일이 발생합니다.


대신 우리가 취한 접근법은 NN이 데이터 집합의 임의의 조각에 대해 좋은 수행을하도록함으로써 보완하기위한 것이므로 잘 알려지지 않은 테스트 집합에서 수행 할 수 있기를 바랍니다. 대신 그들은 테스트와 학습에 실패했습니다.


사막에 사는 동물을 상상해보십시오. 태양이 많고 눈이 전혀 없습니다. 이것은 우리의 NN 데이터가 환경의 역할을하기 때문에 리징 시장을위한 메타 포어입니다. 동물들은 사막에서 사는 법을 배웠습니다.


추운 기후에 사는 동물을 상상해보십시오. 눈과 태양이 전혀 없습니다. 글쎄, 그들은 조정했다.


그러나 실험에서 우리는 NN을 사막, 눈, 물, 나무에 무작위로 배치했습니다. 데이터의 다른 조각 (무작위로 상승, 떨어지는, 평평하게.)으로 그들을 제시함으로써. 동물들이 죽었다.


또는 달리 말하자면, 우리는 상승 시장을 겨냥한 무작위 데이터 세트 1을위한 최상의 신경망을 선택했습니다. 그런 다음 우승자와 자녀에게 낙찰 시장 데이터를 제공했습니다. NN은 제대로 수행되지 못했지만, 우리는 가난한 사람들, 아마도 돌연변이 어린이 중 한 명 이었지만 상승하는 시장에서 거래 할 수있는 능력을 상실했지만 낙상에 대처할 능력이있었습니다.


그런 다음 테이블을 다시 돌렸고 다시 최고의 연기자를 얻었습니다. 우리는 NN에게 보편적 인 기회를주지 않았습니다.


유전자 알고리즘은 오래된 정보에 대한 성능을 잃지 않고 새로운 정보를 배울 수있는 기술이 있습니다 (결국 동물은 여름과 겨울에 살 수 있습니다. 그래서 진화는 반복되는 변화를 처리 할 수 ​​있습니다). 우리는 나중에이 기술에 대해 논의 할 수 있습니다. 이 기사에서는 성공적인 외환 자동 거래 시스템을 구축하는 것보다 Cortex 신경망 소프트웨어를 사용하는 방법에 대해 자세히 설명합니다.


신경망 유전자 알고리즘 : 예 1.


이제는 교정에 대해 말할 때입니다. 이전 단계에서 생성 한 간단한 유전자 알고리즘에는 두 가지 주요 결함이 있습니다. 첫째, 이익으로 거래하지 못했습니다. 그것은 괜찮습니다, 우리는 부분적으로 훈련 된 시스템을 사용할 수 있습니다 (처음에는 수익이있었습니다). 두 번째 결함은 더 심각합니다. 우리는이 시스템이하는 일에 대한 통제권이 없습니다. 예를 들어 수익성이 있다는 것을 배울 수 있지만 엄청난 손실을 감수해야합니다.


실생활에서 진화가 하나 이상의 매개 변수를 동시에 최적화 할 수 있다는 것은 잘 알려진 사실입니다. 예를 들어 우리는 빨리 달릴 수 있고 추위에 잘 견디는 동물을 얻을 수 있습니다. 왜 우리의 외환 자동 거래 시스템에서 같은 일을하려고하지?


우리가 수정을 사용하는 것은 추가 징계의 집합 일뿐입니다. 말하자면, 우리 시스템은 drawdown 0.5로 거래하고, 0-0.3 간격으로 확인하고 싶습니다. 시스템에 실수를했다고 "알리기"위해 우리는 DD의 크기에 비례하여 그 이익을 줄입니다 (어떤 유전자 알고리즘을 결정할 지 결정했습니다). 그런 다음 진화 알고리즘이 나머지를 처리합니다.


우리가 고려해야 할 몇 가지 요소가 더 있습니다. 구매 및 판매 운영의 횟수를 동일하게 유지하거나, 수익성있는 운영을 더 원하고, 실패로 이어지기를 원합니다. 선형 등등.


evolution_01.tsc에서 우리는 간단한 수정 세트를 구현합니다. 우선, 초기 보정 값으로 큰 숫자를 사용합니다. 우리가 적용하고자하는 "처벌"에 따라 작은 값 (일반적으로 0에서 1 사이의 값)을 곱합니다. 그런 다음 우리는이 이익에 이익을 곱합니다. 결과적으로, 유전자 알고리즘이 우리의 다른 기준과 얼마나 일치하는지 반영하기 위해 이익이 수정됩니다. 그런 다음 결과를 사용하여 승자 신경망을 찾습니다.


FOREX 무역 전략 : 토론 예 1.


예제 1은 예제 0보다 훨씬 잘 작동합니다. 처음 100 사이클 동안 많은 것을 배웠고 수익 차트는 안심했습니다. 그러나 예제 0에서와 같이 긴 거래는 훨씬 수익성이 높습니다. 이는 우리의 접근 방식에 문제가 있음을 의미합니다. 그럼에도 불구하고이 시스템은 상반되는 초기 조건들 사이의 균형을 발견했다.


학습 집합과보다 중요한 테스트 집합에서 긍정적 인 동력이 있습니다.


추후 학습에 관해서는 사이클 278에서 우리 시스템이 과도 해졌다는 것을 알 수 있습니다. 즉, 우리는 여전히 학습 집합에 진전이 있음을 의미합니다.


그러나 테스트 세트는 약점을 보여줍니다.


이것은 NN의 공통적 인 문제입니다 : 우리가 학습 집합에 대해 가르치면, 학습 집합에 대해 학습 할 때 배우고 때로는 학습 집합에서 성능을 잃어 버릴 때까지 너무 잘 학습합니다.


이 문제를 해결하기 위해 "전통적인"솔루션이 사용됩니다. 신경망은 계속해서 새로운 최고치에 도달 할 때마다 이전 세트를 덮어 쓰고 신경 쓰는 것이 좋습니다. 이것은 FFBP 교육에서 사용한 것과 같은 접근법입니다. 이번에는 코드를 추가하고 테스트 세트에서 최상의 신경망을 찾고 SAVE_NN을 호출하거나 뉴럴 네트워크의 가중치를 파일). 이렇게하면 훈련을 중단 할 때 최고의 테스트 수행자가 저장되고 기다리고 있습니다.


또한 최대 값이 아님을 유의하십시오. 이익은 있지만 최적의 성과이므로 테스트 세트에서 최고의 연기자를 찾을 때 수정을 고려하십시오.


FOREX 기술 분석을위한 유전 알고리즘 : 지금 어디 있습니까?


승자 신경망을 얻은 후에는 이전 기사에서 설명한 단계를 수행하여 해당 신경망의 가중치를 내 보낸 다음 Meta Trader, Trade Station 등과 같은 실시간 거래 플랫폼에서 사용할 수 있습니다.


또는 신경 회로망을 최적화하는 다른 방법에 집중할 수 있습니다. FFBP 알고리즘과 달리 학습 및 테스트 세트를 사용하여 avay를 얻고 순차 학습을 이동할 수 있습니다.

No comments:

Post a Comment