트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 1175

 
알렉세이 비아즈미킨 :

3개의 수업이 있습니다. 나무에는 사고 팔고 기다리라는 신호가 있습니다. 이제 catboost를 실험하고 대상을 단순화하여 한 클래스로 압축합니다...

나는 ctree 및 cnode 클래스 에 대해, 그리고 일반적으로 OOP에 대해 아는 것이 없습니다. 프로그래밍도 그다지 좋지 않으므로 여기에서 클래스 코드에서 프로그래머 없이 알아낼 수 있습니다 ...

예, 구축 방법과 이유에 대한 더 많은 질문이 있습니다. 그들은 또한 최적화 프로그램에서 유전학을 통해 분기할 수 있지만 이것은 더 이상 귀하의 것과 유사하지 않습니다. 오히려 그것은 최적화되고 있는 알고리즘 트리처럼 보일 것이고, 말 그대로 그 자체로 레이어에서 더 복잡해질 것입니다. 최적에 도달하면 최적화 프로그램에서 불필요한 것들을 제거합니다. 이것은 단지 옵션일 뿐 작동한다는 사실이 아닙니다.

 
막심 드미트리예프스키 :

예, 구축 방법과 이유에 대한 더 많은 질문이 있습니다. 그들은 또한 최적화 프로그램에서 유전학을 통해 분기할 수 있지만 이것은 더 이상 귀하의 것과 유사하지 않습니다. 오히려 그것은 최적화되고 있는 알고리즘 트리처럼 보일 것이고, 말 그대로 그 자체로 레이어에서 더 복잡해질 것입니다. 최적에 도달하면 최적화 프로그램에서 불필요한 것들을 제거합니다. 이것은 단지 옵션일 뿐 작동한다는 사실이 아닙니다.

코드의 본질을 이해하지 못하면 논의하기 어렵습니다 ...

나는 예측자 그룹의 회전에 대한 실험을 수행했습니다. 내가 말한 대로 일부 예측자가 샘플을 잘 깨고 루트에 서 있지만 동시에 전체 그림을 망친다고 합니다.

일반적으로 저는 9개의 그룹을 얻었습니다. 예측기에 포함된 논리에 따라 그룹을 나누었습니다. 단순한 논리보다 훨씬 더 일반화되었습니다. 나는 512개의 그룹 조합을 얻었습니다. 아래 차트는 그룹 조합에 따른 재무 결과의 스프레드를 보여줍니다. 선택을 위해 "정밀도" 메트릭을 사용했습니다. 세트는 다른 날과 동일했습니다. - 변경 없음, 대상 열_100, 트리 레벨 4에서는 1000번의 반복만 수행했습니다.

이 표는 모든 예측 변수(1710개 단위, 최대값 - 3511개 및 최소값 - 607개)가 있는 전체 세트의 결과를 보여줍니다.


그런 다음 패널티로 계산했습니다. 그룹 플래그 차단에 조합의 재무 결과를 곱하고 값이 0이면(그룹이 사용됨) 그룹에 대해 긍정적인 결과를 수정합니다. 값이 0이 아니면 그룹은 차단됨 - 결과에 -1을 곱한 다음 각 그룹의 값을 합산합니다. 아이디어에 따르면 차단 시 더 많은 벌칙이 있는 그룹은 전체에서 다른 그룹보다 더 나쁜 그룹이며 추가 연구를 위해 순위를 매길 수 있습니다.

차트에서 지표의 누적은 다음과 같습니다.

물론 곡선의 모양은 조합 알고리즘에 따라 다릅니다. 모두 동일한 수의 0과 1을 가지므로 최종 결과는 여전히 유효합니다. 그리고 그것은 아래 표에 있습니다.



그룹 1, 8 및 9를 비활성화하는 것이 재무 결과를 개선하는 데 좋은 영향을 미친다는 것을 표에서 알 수 있습니다.

최고의 재무 결과의 조합을 살펴 보겠습니다.



그리고 지금 최악의 결과의 조합을 위해



일반적으로 추정 방법은 효과가 있었습니다. 최상의 결과에서는 실제로 차단되지 않은 그룹 3,4,5,7이 있고 최악의 경우 차단된 반면 최악의 경우 상황은 거의 미러 이미지입니다.

결론 - 이 접근 방식은 생명권이 있으며 부정적인 영향을 미치는 예측 변수 그룹을 적극적으로 식별할 수 있습니다.

그런 다음 두 가지 방법이 있습니다. 부정적인 그룹을 분할하여 그러한 나쁜 결과의 원인을 찾거나 긍정적인 그룹을 나누고 좋은 결과를 제공하는 마법의 예측 변수가 어디에 있는지 식별하는 것입니다. 반면에, 당신은 두 가지 경로를 따라 갈 수 있습니다 ...

10가지 최고의 조합과 최악의 조합:

글쎄, 당신은 다른 대상에게 무슨 일이 일어날 지 볼 필요가 있습니다 ...

그리고 여기에 또 다른 그래프가 있습니다. 명확하게 볼 수 있습니다. 더 정확한 결정(Proc_All - 모든 결정(총 0과 1)에 관한 정확/잘못된 결정의 델타), 특히 이것이 모든 입력에 대한 올바른 거래 입력(Proc_1_V02)인 경우 이익이 더 커집니다.


 
알렉세이 비아즈미킨 :

그런 다음 프로덕션에서 이러한 예측자를 처리하여 신호를 얻는 방법은 무엇입니까? 다 같은 모델?

 
막심 드미트리예프스키 :

그런 다음 프로덕션에서 이러한 예측자를 처리하여 신호를 얻는 방법은 무엇입니까? 다 같은 모델?

생산(실제 무역)은 아직 멀었지만 모델을 짝을 지어 숲을 만들 계획은 다음 단계이지만 이 프로세스를 자동화하는 방법을 아직 모르겠습니다...

최종 형태의 예측자는 Expert Advisor에서 얻을 수 있으므로 사용을 위해 선택하는 것은 어렵지 않습니다.
 
막심 드미트리예프스키 :

괜찮아. 성공) 캣버스트로 mt의 무리를 설정한다면 - 기사를 작성하십시오 :)

말 그대로 오늘 은 두뇌 작업을 하고 있었습니다... Algo 개선, 산은 더 높아지고 산은 더 가팔라지고 있습니다.

지난 3개월간 나머지는 2018년 초까지 15분

모니터링을 하고 휴식을 취하세요. 작업은 여전히 마차입니다. 게다가, 실수는 유치하고, .. 배열 중 하나는 처음에 (시리즈로) 잘못 바뀌었고 거꾸로 된 특징에 대해 항상 훈련되어 잘 공부하지 않는다고 분노합니다.

물론 CatBoost 모델 을 EA에 도입하는 문제는 여전히 열려 있고 한편으로는 전혀 이해가 안 가는 C++ 코드를 업로드할 기회가 있는 반면에 일반적으로 모델을 수정하기 위해 시트에 데이터를 가져오고 싶고 이러한 목적을 위해 내가 직접 작성하지 않을 인터프리터가 필요합니다 ...

예, 자신만의 접근 방식이 있습니다. 모델은 비교적 짧은 거리에서 작동하지만 역사에 대한 실제 조건을 시도하지 않는 이유는 무엇입니까? 3개월 동안 과거에 대해 연구하고 미래에 대해 1을 거래하고 결과를 함께 붙이면 사용에 적합한 흥미로운 결과를 얻을 수 있습니다.

그리고 실수 - 예, 모든 사람에게 발생합니다 - 재미있는 실수가 있습니다 - 훈련 샘플에서 훈련되지 않은 대상을 "사용하지 않음"으로 표시하는 것을 잊었고 몇 분 동안 결과를 평가하는 것이 기뻤습니다. )

 
알렉세이 비아즈미킨 :

코드의 본질을 이해하지 못하면 논의하기 어렵습니다 ...

나는 예측자 그룹의 회전에 대한 실험을 수행했습니다. 내가 말한 대로 일부 예측자가 샘플을 잘 깨고 루트에 서 있지만 동시에 전체 그림을 망친다고 합니다.

일반적으로 저는 9개의 그룹을 얻었습니다. 예측기에 포함된 논리에 따라 그룹을 나누었습니다. 단순한 논리보다 훨씬 더 일반화되었습니다. 나는 512개의 그룹 조합을 얻었습니다. 아래 차트는 그룹 조합에 따른 재무 결과의 스프레드를 보여줍니다. 선택을 위해 "정밀도" 메트릭을 사용했습니다. 세트는 다른 날과 동일했습니다. - 변경 없음, 대상 열_100, 트리 레벨 4에서는 1000번의 반복만 수행했습니다.

이 표는 모든 예측 변수(1710개 단위, 최대값 - 3511개 및 최소값 - 607개)가 있는 전체 세트의 결과를 보여줍니다.


그런 다음 패널티로 계산했습니다. 그룹 플래그 차단에 조합의 재무 결과를 곱하고 값이 0이면(그룹이 사용됨) 그룹에 대해 긍정적인 결과를 수정합니다. 값이 0이 아니면 그룹은 차단됨 - 결과에 -1을 곱한 다음 각 그룹의 값을 합산합니다. 아이디어에 따르면 차단 시 더 많은 벌칙이 있는 그룹은 전체에서 다른 그룹보다 더 나쁜 그룹이며 추가 연구를 위해 순위를 매길 수 있습니다.

차트에서 지표의 누적은 다음과 같습니다.

물론 곡선의 모양은 조합 알고리즘에 따라 다릅니다. 모두 동일한 수의 0과 1을 가지므로 최종 결과는 여전히 유효합니다. 그리고 그것은 아래 표에 있습니다.



그룹 1, 8 및 9를 비활성화하는 것이 재무 결과를 개선하는 데 좋은 영향을 미친다는 것을 표에서 알 수 있습니다.

최고의 재무 결과의 조합을 살펴 보겠습니다.



그리고 지금 최악의 결과의 조합을 위해



일반적으로 추정 방법은 효과가 있었습니다. 최상의 결과에서는 실제로 차단되지 않은 그룹 3,4,5,7이 있고 최악의 경우 차단된 반면 최악의 경우 상황은 거의 미러 이미지입니다.

결론 - 이 접근 방식은 생명권이 있으며 부정적인 영향을 미치는 예측 변수 그룹을 적극적으로 식별할 수 있습니다.

그런 다음 두 가지 방법이 있습니다. 부정적인 그룹을 분할하여 그러한 나쁜 결과의 원인을 찾거나 긍정적인 그룹을 나누고 좋은 결과를 제공하는 마법의 예측 변수가 어디에 있는지 식별하는 것입니다. 반면에, 당신은 두 가지 경로를 따라 갈 수 있습니다 ...

10가지 최고의 조합과 최악의 조합:

글쎄, 당신은 다른 대상에게 무슨 일이 일어날 지 볼 필요가 있습니다 ...

그리고 여기에 또 다른 그래프가 있습니다. 명확하게 볼 수 있습니다. 더 정확한 결정(Proc_All - 모든 결정(총 0과 1)에 대한 정확/잘못된 결정의 델타), 특히 이것이 모든 입력과 관련된 올바른 거래 입력(Proc_1_V02)인 경우 이익이 더 커집니다.


그냥 주석이고 읽기는 쉽지만 의미를 파악하는 것은 현실적이지 않습니다. 말장난이나 말장난은 저에게 터무니없이 ... 플러스 기사에 대한 Maxim의 제안 :)

Expert Advisors와 Python 콘솔의 연결과 관련하여 저는 이미 MQL에서 Python 코드 블록을 실시간으로 보내고 실행할 수 있는 자체 엔진을 제공했으며 테스터에서도 작동합니다.

 
이반 네그레쉬니 :

그냥 주석이고 읽기는 쉽지만 의미를 파악하는 것은 현실적이지 않습니다. 말장난이나 말장난은 저에게 터무니없이 ... 플러스 기사에 대한 Maxim의 제안 :)

Expert Advisors와 Python 콘솔의 연결과 관련하여 저는 이미 MQL에서 Python 코드 블록을 실시간으로 보내고 실행할 수 있는 자체 엔진을 제공했으며 테스터에서도 작동합니다.

그리고 기사를 말하십시오-간단한 생각을 표현할 수 없다면 어떤 기사가 있습니까?

요점은 트리를 구축할 때 탐욕의 원칙이 사용된다는 것입니다. 이는 초기에 두 개의 큰 그룹으로 나뉘는 예측자 사이의 논리적 연결의 출현을 방지하므로(의사결정 트리가 구축되는 방식을 이해합니까?), 따라서 모델은 같은 시간 동안 더 많은 수의 예측 변수 조합을 검사하기 때문에 더 적은 수의 예측 변수에서 더 나은 결과를 얻을 수 있지만 이는 그 정도가 적습니다.

내 말이 당신에게 그 단어의 의미를 드러내지 않는다면 구체적인 질문을 하십시오.

 
알렉세이 비아즈미킨 :

그리고 기사를 말하십시오-간단한 생각을 표현할 수 없다면 어떤 기사가 있습니까?

요점은 트리를 구축할 때 탐욕의 원칙이 사용된다는 것입니다. 이는 초기에 두 개의 큰 그룹으로 나뉘는 예측자 사이의 논리적 연결의 출현을 방지하므로(의사결정 트리가 구축되는 방식을 이해합니까?), 따라서 모델은 같은 시간 동안 더 많은 수의 예측 변수를 검사하기 때문에 더 적은 수의 예측 변수에서 더 나은 결과가 나오지만 이는 그 정도가 적습니다.

내 말이 당신에게 그 단어의 의미를 드러내지 않는다면 구체적인 질문을 하십시오.

포럼에서의 유창한 생각 표현과 기사 게재 는 다른 장르입니다.

여기 이 스레드에서 이미 얼마나 많이 논의되었지만 의미도 없고 실질적인 결과도 없습니다.

그리고 질문, 특히 트리의 구조와 같은 근본적인 질문, 여기서 논의하는 요점은 무엇입니까?

기사 및/또는 코드를 작성하는 것이 좋습니다 - ML 모델, 사용된 라이브러리의 효율성을 비교하고 Expert Advisors를 테스트 및 모니터링하기 위해...

 
이반 네그레쉬니 :

포럼에서의 유창한 생각 표현과 기사 게재 는 다른 장르입니다.

여기 이 스레드에서 이미 얼마나 많이 논의되었지만 의미도 없고 실질적인 결과도 없습니다.

그리고 질문, 특히 트리의 구조와 같은 근본적인 질문, 여기서 논의하는 요점은 무엇입니까?

기사 및/또는 코드를 작성하는 것이 좋습니다 - ML 모델, 사용된 라이브러리의 효율성을 비교하고 Expert Advisors를 테스트 및 모니터링하기 위해...

MO에 대한 기사가 있으며 모든 것이 과학적으로 입증되었지만 여기에서는 오히려 신규 이민자가 질문을 하거나 시도할 몇 가지 아이디어에 대해 논의할 수 있습니다. 일반적으로 내 행동의 결과에 대해 이미 자신이 있을 때 기사를 작성해야 하는데, 나는 아직 멀었습니다.

 

어제 저는 다양한 예측 변수 그룹을 사용할 때 다양한 재무 지표 에 대해 글을 썼습니다. 그 메시지에서 나는 이익과 같은 지표를 사용하여 그룹의 중요성을 선택했습니다. 오늘은 Maxim의 질문이 생각나서 테스트 샘플에서 모델의 결과를 보기로 하고(예전에는 테스트 샘플만 봤습니다), 같은 조작을 하고 속상했습니다-그룹의 의미가 거꾸로 바뀌었습니다- 어때요, 제 생각에는 ... 두 샘플의 결과를 비교하면 순수한 이익과 같은 기준이 적합하지 않다는 것이 분명해졌습니다. 문제를 해결하기 위해 다른 방법을 찾아야 합니다.

그리고 욕심만 부리지 않고 512개 모델의 평균 수익보다 높은 결과를 보이는 모델들을 합산해서 좋은 결과를 얻었다면 어떨까!? 나는 사용 가능한 지표 중 어떤 것이 이것을 가장 좋은 방법으로 구현할 수 있는지 찾기로 결정했습니다. 기술은 간단합니다. 테스트 샘플에서 지표의 평균값을 결정한 다음 모델의 각 버전을 확인합니다. 평균값보다 크면 1이 되고 작으면 0이 됩니다. (나는 Excel에서 이것을했고 중간 계산은 이해에 유용합니다) 그런 다음 검사 샘플과 동일하게 두 샘플의 지표를 서로 비교하여 지표를 다음 중 하나에 할당하는 안전성을 나타내는 통계를 얻습니다. 그룹(평균값 이상 또는 이하). 그런 다음 각 지표가 검사 표본에서 어떤 이익을 가져다주는지 살펴보았는데, 표본을 평균 이상 또는 평균 미만이라는 원칙에 따라 나누면 평균 이익을 유지했습니다.

흥미로운 결과



이 표는 이익에 의한 선택(FinRez)이 두 샘플 간의 일치 비율이 가장 낮았음을 보여주며, 더욱이 "평균 미만"(숫자 "0"이 있는 열)을 필터링할 때 이 그룹에는 대부분의 수익성 있는 모델이 포함되었습니다. 시험에서 평균 이상을 수행한 그룹보다 시험 샘플을 더 많이 사용합니다. 생각해보면 회귀가 아닌 분류에 따라 훈련을 하기 때문에 합리적이고, 전략에 차익실현을 하면 손절매가 뜨게 되어 같은 수치라도 결과가 왜곡되게 됩니다. 정확하게 분류된 신호. 다른 지표를 보면 예측 가능성이 훨씬 높습니다. 이는 추세가 테스트 샘플과 검사 샘플 모두에서 모델에 대해 평균적으로 유지된다는 것을 의미합니다. Proc_1_V01 표시기에 초점을 맞추기로 결정했지만 이것은 샘플의 모든 유닛에서 올바르게 분류된 대상 유닛의 백분율이지만 이 표시기는 2차원 공간(위/ 평균 이하) - 87.3%, 내 의견으로는 매우 우수하고 그의 방법에 따라 샘플을 분할하면 거의 동일한 평균 이익 가치가 제공되고 평균 값보다 약간 더 큽니다 - 1488. 그런 다음 우리는 이 지표에 따라 모델을 선택할 때 좋은 재무 결과를 얻을 기회가 더 많습니까? 아니면 고려하지 않았습니까?

그 동안 나는 FinRez(이익)가 아닌 지표, 즉 지표 Proc_1_V01을 고려하여 그룹을 수정하기로 결정했습니다. 방법론을 그대로 두었고 결과적으로 매우 매력적인 결과를 얻었습니다.


그룹의 중요성은 지표로 그룹을 정의한 상황과 대조적으로 그룹 7을 제외하고 테스트 샘플과 시험 샘플 모두에서 일관성을 유지했습니다. 재무 결과는 아래 표에 나와 있습니다. .



나는 여기서 다음과 같은 결론을 내립니다. 안정성이 이익의 절대 값보다 더 중요하며 이는 무작위일 가능성이 더 큽니다.

또한 샘플 간에 이익이 어떻게 분배되는지 보여주는 그래프를 추가하겠습니다(각각 테스트 및 시험에 대해 100%로 감소) - 필터링된 지표는 왼쪽에 있고 필터링된 지표는 오른쪽에 있습니다. 이것은 Proc_1_V01 표시기의 평균값을 1.25배 증가시킨 경우입니다.

그리고 이것은 비교를 위한 것입니다 - 이익으로 선택하면 - 밀도는 증가하지만 20%에서 -15%로 뚱뚱한 꼬리가 나타나서 좋지 않습니다.

일반적으로 가장 좋은 방법으로 추세를 결정할 지표에 대해 생각해야 합니다.

그러나 두 지표를 결합하여 Proc_1_V01에 추가하면 손실이 훨씬 적기 때문에 이익 비율(> 20%)로 필터링하고 극단값은 종종 무작위이기 때문에 < 80%, 더 가치 있는 것을 얻을 수 있습니다. 그림.


사유: