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

 
mytarmailS :
이미 이 작업을 수행했지만 신경망은 내가 요청한 대상에 대해 더 넓은 범위에서 학습하지 않습니다.

나는 당신의 말에 미소를 지었습니다.

이것은 학습하지 않는 신경망이 아니지만 말 그대로 학습하지 않도록 강제합니다. 신경망은 잡음 외에도 신호가 있는 위치를 학습하고, 사용자의 작업은 대신경망을 사용하여 이 신호를 잡음에서 분리하여 재훈련을 방지하는 것입니다.

 
알렉세이 버나코프 :
이게 더 정답입니다) 다른 방법을 시도해 봐야 합니다.

어떻게 든 그러한 접근 방식을 제안했습니다.

우리는 조언자를 데려갑니다. 코드베이스에서 가능합니다. 가장 중요한 것은 전혈이고 배수가 되어도 상관 없습니다. 전제조건을 만들 수 있습니다. 예: 추세, 세 개의 창, SL 및 TP 없음, MM, 상태 오류 처리...

배수의 원인을 살펴보고 R을 사용하여 문제를 해결하려고 합니다. 우리는 외삽법으로 더 낮은 창에서 문제를 해결하고 이전 창에서 분류에 따라 다음 막대를 예측합니다.

 
알렉세이 버나코프 :

기능 선택에 대한 내 기사.

https://habrahabr.ru/company/aligntechnology/blog/303750/

흥미롭게 읽었습니다. 덕분에 작업했습니다. 실험 6에 대해 이해하지 못했습니다. 결국 Y 및 Z 예측 변수를 선택한 이유는 무엇입니까? Z는 대상 변수이며 예측 변수 목록에 있어서는 안 됩니다.

3D 토끼 그래프를 가져와서 모델을 훈련시킨다는 아이디어가 마음에 들었습니다. 솔직히 말해서, 처음에는 "토끼"가 그래프에서 보기 좋고 숫자 배열에서 토끼를 볼 수 있는 능력이 있는 사람에게만 의미가 있는 일종의 의사 난수 데이터 세트라고 생각했습니다. 그러나 토끼를 설명하는 그런 기능은 없습니다. 어떤 모델이든 3차원 공간에서 특별한 모양의 클러스터를 형성하는 점들의 집합일 뿐입니다. 내 관점에서, 각 점의 세 좌표 모두 서로 연결 및 종속성이 없으므로 어떤 알고리즘도 대처할 수 없을 것으로 예상했습니다. 기사 말미에 나는 놀랐다.

PCA로 동일한 실험을 시도했는데 결과는 다음과 같습니다.
95% 정확도를 위해서는 하나의 구성 요소가 필요하며 X와 Y를 사용합니다. 하지만 예측 알고리즘은 하나의 구성 요소로 작동하지 않으므로 최소 두 개를 가져와야 합니다. 일반적으로 둘 다 X와 Y를 사용하므로(코드에는 표시되지 않지만 그래프에서는 볼 수 있음) 모든 것이 정상입니다.
sampleA에서 모델을 학습시킨 다음 sampleA에 대해 Z를 예측합니다. R^2 = 0.04759303
sampleA에 대한 모델 학습, sampleB에 대한 Z 예측: R^2 = 0.05325888

나는 sampleB에 대해 예측된 Z의 3d 플롯을 그렸고, 그것은 나쁘게 판명되었습니다. 모델은 실제로 종속성을 찾지 못했지만 모든 Z를 하나의 평면으로 평균화했습니다. 토끼는 평평하게 나왔다. 일부 모델을 훈련하고 예측된 토끼를 그려 보셨습니까? 다른 모델과 어떻게 작동하는지 흥미롭습니다.

토끼 및 y-aware pca에 대한 코드를 첨부했습니다. 작은 잼이 있습니다. 예측자 로딩 차트는 어떤 이유로 구성 요소를 정렬합니다. 즉, 1,10,11,12,2,3,4,5,... 그리고 중요한 순서대로 PC1, PC2, PC3,...

파일:
bunny_pca.txt  5 kb
 
mytarmailS :
이미 이 작업을 수행했지만 신경망은 내가 요청한 대상에 대해 더 넓은 범위에서 학습하지 않습니다.

나는 아직 한 마디 이상으로 뉴런을 훈련시키려고 시도하지 않았지만 원리는 동일할 것이라고 믿습니다. 나는 그녀와 다음과 같이 일한다.

1) mt5 - ohlc, 시간, 표시등에서 가능한 한 많은 초기 데이터를 수집합니다. 뭐가 쓸모 있고 뭐가 쓸모가 없는지 몰라서 다 가져가서 쓰레기를 걷어내려고 해요. 모든 것을 뉴런으로 옮기는 것은 불가능하다. 왜냐하면 뉴런은 쓰레기에 대해 재교육을 받고 이 경우 전면 테스트에서 실수를 하기 때문이다. 쓰레기를 제거하는 것은 쉬운 일이 아닙니다. 일반적으로 이 주제의 28페이지 모두가 이를 수행하는 방법에 대해 설명되어 있으며 모든 것이 여전히 모호합니다. 나는 다음 막대에 대한 가격의 하락/증가에 따라 0 또는 1의 목표 변수를 데이터에 추가합니다.

2) 사실상 쓰레기 제거. 소스 데이터를 분석하고 평가하는 기능이 있어야 합니다. 점수가 높을수록 쓰레기가 적습니다. 초기 예측자(훈련 테이블의 열)의 다양한 조합으로 평가 함수를 제공하려고 시도하고 결과를 개선하려고 합니다. 결과적으로 이론상 재교육으로 이어지지 않는 특정 예측 변수 집합이 발견됩니다.

3) 쓰레기를 걸러낸다고 하자. 이제 뉴런을 훈련할 시간입니다. 나는 R의 nnet 패키지를 사용하는데, 학습률, 가속, 감속, 훈련 기능 유형과 같은 하이퍼파라미터가 없다는 장점이 있습니다. 더 적은 하이퍼파라미터 - 더 적은 문제. 교차 검증으로 훈련해야 합니다. 원본 테이블을 가져 와서 70%/15%/15% 비율로 행을 3으로 나눕니다(새 테이블을 train/test/validate라고 함)(코드는 딸랑이 로그에서 가져올 수 있습니다. ). 다음으로 예를 들어 기차 테이블에서 뉴런 훈련을 10번 반복합니다. 나는 예측 오차 R^2를 고려합니다. 나는 테이블 테스트에 대한 결과를 예측하고 검증하며, R ^ 2도 계산합니다. 10번의 학습 반복을 더 수행하고 3개의 테이블에 대한 예측을 반복하고 새로운 R^2를 확인합니다. 테이블 중 하나의 R^2가 떨어지기 시작하는 순간에 훈련을 중지해야 합니다(항상 기차 테이블에서만 증가할 것입니다). 준비가 된. 이제 이 모든 것을 다른 수의 은닉 뉴런과 교차 검증 사이에 다른 수의 훈련 반복을 사용하여 처음부터 반복할 수 있습니다. 끝에서 세 개의 아블레의 최소 R^2가 다음보다 크길 바랍니다. 마지막으로.

이 모든 것이 약간 복잡해 보일 수 있지만 실제로는 훨씬 더 복잡합니다. :) 이러한 각 단계에는 많은 문제가 있습니다. 그러나 일관된 결과를 제공합니다.

 
산산이치 포멘코 :

소음에서 배우기 때문에 배우지 않은 것이 좋습니다. 그러나 내가 성배를 배웠다면, 그러나 실제로는 ....

소음을 제거하기 위해 여기에서 바쁘다. 그렇기 때문에 우리는 적어도 무언가가 남을 것이라는 희망으로 많은 예측 변수를 사용합니다.

네, 노이즈에 대해 가르치고 노이즈에서 노이즈를 제거하려고 하는 것은 바로 당신입니다. 스토캐스틱(예를 들어)의 마법 값이 90이고 시장이 이 지표 값으로 하락한다면, 필요하면 네트워크가 눈에 보이지 않을 것입니다.

1) 가장 좋은 경우에, 당신이 하는 일은 어떤 기준에 따라 가능한 100가지 중 최고의 10가지 지표를 선택하는 것이고, 그 지표에는 값의 범위가 있습니다 . 항상 그런 것은 아니지만 특정 상황에서는 이 3개의 값만 있고 노이즈가 없으며 나머지 값은 동일한 노이즈이므로 전체 표시기가 아닌 이 3개만 남겨야 합니다. 귀하의 심사는 질적으로 깊지 않으므로 그다지 효과적이지 않습니다.

2) 또한, 기호의 불일치와 같은 것이 있습니다. 예를 들어 우리는 가격을 취하고 객관적이고 모순되지 않습니다. 즉, 가격이 오르면 오르고 두 번째 선택이 없습니다. 추세의 강도와 뉘앙스 등), 우리는 동일한 확률을 취하며 값 90을 취할 수 있으며 평평하고 추세가 상승하고 추세가 하락할 때, 즉이 지표뿐만 아니라 어떤 식 으로든 네트워크에 도움이되지 않습니다. 반대로 판독 값이 모순되기 때문에 끊임없이 혼란 스럽기 때문에 시장 에 대한 일반적인 지표는 적용 할 수 없으며 그것에 대해 생각조차하지 않습니다. 끔찍하고 더 많은 다음 소음에 대해 알려주세요

3) 나는 실제로 네트워크를 훈련시켰습니다. 위에서 쓴 것처럼 예측 범위가 마음에 들지 않습니다.

 
Dr.Trader :

흥미롭게 읽었습니다. 덕분에 작업했습니다. 실험 6에 대해 이해하지 못했습니다. 결국 Y 및 Z 예측 변수를 선택한 이유는 무엇입니까? Z는 대상 변수이며 예측 변수 목록에 있어서는 안 됩니다.

3D 토끼 그래프를 가져와서 모델을 훈련시킨다는 아이디어가 마음에 들었습니다. 솔직히 말해서, 처음에는 "토끼"가 그래프에서 보기 좋고 숫자 배열에서 토끼를 볼 수 있는 능력이 있는 사람에게만 의미가 있는 일종의 의사 난수 데이터 세트라고 생각했습니다. 그러나 토끼를 설명하는 그런 기능은 없습니다. 어떤 모델이든 3차원 공간에서 특별한 모양의 클러스터를 형성하는 점들의 집합일 뿐입니다. 내 관점에서, 각 점의 세 좌표 모두 서로 연결 및 종속성이 없으므로 어떤 알고리즘도 대처할 수 없을 것으로 예상했습니다. 기사 말미에 나는 놀랐다.

PCA로 동일한 실험을 시도했는데 결과는 다음과 같습니다.
95% 정확도를 위해서는 하나의 구성 요소가 필요하며 X와 Y를 사용합니다. 하지만 예측 알고리즘은 하나의 구성 요소로 작동하지 않으므로 최소 두 개를 가져와야 합니다. 일반적으로 둘 다 X와 Y를 사용하므로(코드에는 표시되지 않지만 그래프에서는 볼 수 있음) 모든 것이 정상입니다.
sampleA에서 모델을 학습시킨 다음 sampleA에 대해 Z를 예측합니다. R^2 = 0.04759303
sampleA에 대한 모델 학습, sampleB에 대한 Z 예측: R^2 = 0.05325888

나는 sampleB에 대해 예측된 Z의 3d 플롯을 그렸고, 그것은 나쁘게 판명되었습니다. 모델은 실제로 종속성을 찾지 못했지만 모든 Z를 하나의 평면으로 평균화했습니다. 토끼는 평평하게 나왔다. 일부 모델을 훈련하고 예측된 토끼를 그려 보셨습니까? 다른 모델에서 어떻게 작동하는지 흥미롭습니다.

토끼 및 y-aware pca에 대한 코드를 첨부했습니다. 작은 잼이 있습니다. 예측자 로딩 차트는 어떤 이유로 구성 요소를 정렬합니다. 즉, 1,10,11,12,2,3,4,5,... 그리고 중요한 순서대로 PC1, PC2, PC3,...

그렇다면 주요 구성 요소에 X와 Y가 있습니까? 이것은 이해하는 것이 중요합니다.

둘째, 토끼 근사에 대해. 당연히 그래야 합니다! 이것은 동일한 선형 모델입니다. 약간의 기울기가 있는 평면(X 및 Y인 경우) 또는 선(예측자가 하나 있는 경우)을 간단히 그립니다. 이것이 전체 선형 토끼 모델입니다.) 이것이 바로 제가 비선형 모델을 사용하려고 하는 이유입니다.

이것은 다른 방법(이산 값 기반)으로 토끼를 복원하는 방법입니다.

 
알렉세이 버나코프 :

그렇다면 주요 구성 요소에 X와 Y가 있습니까? 이것은 이해하는 것이 중요합니다.

예, X와 Y만 가능합니다. 코드를 통해 이 작업을 수행하는 방법은 아직 찾지 못했습니다. 이에 대한 모든 기사는 그래프로 작동합니다. 사용할 구성 요소의 수는 componentsToUse 변수에서 찾을 수 있습니다. 이 경우 componentsToUse = 2, 즉 PC1 및 PC2에 대한 그래프에 넓은 수평선 이 있는 예측 변수만 취하면 됩니다.

위의 그래프에서 PC1 및 PC2 열(첫 번째 및 두 번째 주요 구성 요소)을 확인한 다음 녹색 수평선을 확인합니다. 선이 0에서 멀어지면(더하기 또는 빼기 여부는 중요하지 않음) 이 예측자는 해당 주 구성 요소에서 사용됩니다. PC1은 y_clean을 사용하고(원래 예측자와 혼동되지 않도록 데이터를 스케일링할 때 "_clean"이 자동으로 추가됨) PC2는 x_clean을 사용합니다. 이것은 PCA 구성 요소 분석의 결과입니다. x_clean 및 y_clean을 가져와야 합니다.

계속해서 PC3은 input_noise_3_clean을 사용합니다. 이것은 단지 예일 뿐이며 이 경우 PC3를 사용할 필요가 없습니다.

모든 것이 여기에서 정말 잘 해결되었습니다. 그래프에서 X와 Y가 명확하게 나타납니다. 나는 이전에 Forex에 대한 동일한 차트를 게시했습니다. 예를 들어 모든 것이 좋지 않습니다.

 
Dr.Trader :

예, X와 Y만 가능합니다. 코드를 통해 이 작업을 수행하는 방법은 아직 찾지 못했습니다. 이에 대한 모든 기사는 그래프로 작동합니다. 사용할 구성 요소의 수는 componentsToUse 변수에서 찾을 수 있습니다. 이 경우 componentsToUse = 2, 즉 PC1 및 PC2에 대한 그래프에 넓은 수평선 이 있는 예측 변수만 취하면 됩니다.

위의 그래프에서 PC1 및 PC2 열(첫 번째 및 두 번째 주요 구성 요소)을 확인한 다음 녹색 수평선을 확인합니다. 선이 0에서 멀어지면(더하기 또는 빼기 여부는 중요하지 않음) 이 예측 변수는 해당하는 주요 구성 요소에서 사용됩니다. PC1은 y_clean을 사용하고(원래 예측자와 혼동되지 않도록 데이터를 스케일링할 때 "_clean"이 자동으로 추가됨) PC2는 x_clean을 사용합니다.

계속해서 PC3은 input_noise_3_clean을 사용합니다. 이것은 단지 예일 뿐이며 이 경우 PC3를 사용할 필요가 없습니다.

모든 것이 여기에서 정말 잘 되었습니다. 그래프에서 X와 Y가 명확하게 나타납니다. 나는 이전에 Forex에 대한 동일한 차트를 게시했습니다. 예를 들어 모든 것이 좋지 않습니다.

여기에서 예측 변수의 선택은 선형 방법을 통해 얻었습니다. 놀라셨다니 다행입니다. 그래서 당신은 새로운 것을 봅니다.
 
트레이더 박사 :

나는 아직 한 마디 이상으로 뉴런을 훈련시키려고 시도하지 않았지만 원리는 동일할 것이라고 믿습니다. 나는 그녀와 다음과 같이 일한다.

1) mt5 - ohlc, 시간, 표시등에서 가능한 한 많은 초기 데이터를 수집합니다. 뭐가 쓸모 있고 뭐가 쓸모가 없는지 몰라서 다 가져가서 쓰레기를 걷어내려고 해요. 모든 것을 뉴런으로 옮기는 것은 불가능하다. 왜냐하면 뉴런은 쓰레기에 대해 재교육을 받고 이 경우 전면 테스트에서 실수를 하기 때문이다. 쓰레기를 제거하는 것은 쉬운 일이 아닙니다. 일반적으로 이 주제의 28페이지 모두가 이를 수행하는 방법에 대해 설명되어 있으며 모든 것이 여전히 모호합니다. 나는 다음 막대에 대한 가격의 하락/증가에 따라 0 또는 1의 목표 변수를 데이터에 추가합니다.

2) 사실상, 쓰레기의 제거. 원본 데이터를 분석하고 평가하는 기능이 있어야 합니다. 점수가 높을수록 쓰레기가 적습니다. 초기 예측자(훈련 테이블의 열)의 다양한 조합으로 평가 함수를 제공하려고 시도하고 결과를 개선하려고 합니다. 결과적으로 이론상 재교육으로 이어지지 않는 특정 예측 변수 집합이 발견됩니다.

3) 쓰레기를 걸러냈다고 하자. 이제 뉴런을 훈련할 시간입니다. 나는 R의 nnet 패키지를 사용하는데, 학습률, 가속, 감속, 훈련 기능 유형과 같은 하이퍼파라미터가 없다는 장점이 있습니다. 더 적은 초매개변수 - 더 적은 문제. 교차 검증으로 훈련해야 합니다. 원본 테이블을 가져 와서 70%/15%/15% 비율로 행을 3으로 나눕니다(새 테이블을 train/test/validate라고 함)(코드는 딸랑이 로그에서 가져올 수 있습니다. ). 다음으로 예를 들어 기차 테이블에서 뉴런 훈련을 10번 반복합니다. 나는 예측 오차 R^2를 고려합니다. 나는 테이블 테스트에 대한 결과를 예측하고 검증하며, R ^ 2도 계산합니다. 10번의 학습 반복을 더 수행하고 3개의 테이블에 대한 예측을 반복하고 새로운 R^2를 확인합니다. 테이블 중 하나의 R^2가 떨어지기 시작하는 순간에 훈련을 중지해야 합니다(항상 기차 테이블에서만 증가할 것입니다). 준비가 된. 이제 이 모든 것을 다른 수의 은닉 뉴런과 교차 검증 사이에 다른 수의 훈련 반복을 사용하여 처음부터 반복할 수 있습니다. 끝에서 세 개의 아블레의 최소 R^2가 다음보다 크길 바랍니다. 마지막으로.

이 모든 것이 약간 복잡해 보일 수 있지만 실제로는 훨씬 더 복잡합니다. :) 이러한 각 단계에는 많은 문제가 있습니다. 그러나 일관된 결과를 제공합니다.

나는 다른 관점을 가지고 있고 당신은 그것을 이해하지 못합니다
 

산산이치 포멘코 :
그리고 처음 10개(일종의)를 레벨로 가져가고 나머지는 버린다면?

R^2의 그래프와 사용된 부품 수에 대한 승률을 그렸습니다. 전면 테스트에서 가장 좋은 결과는 41개의 구성 요소에서였습니다(약 70%의 이득, 매우 좋음). 그러나 백테스트 차트에서는 알 수 없으며 항상 증가할 뿐입니다. 부품의 중요성에 의존한다면 73을 취해야 할 것입니다. 이는 전면 테스트에서 최상의 결과가 아닙니다.

전면 테스트의 R^2는 시간의 >50%에서 승리하더라도 음수일 수 있습니다. 불균형한 요구 결과로 인해 클래스 "0"이 "1"과 다르므로 평균이 0.5가 아닙니다. R^2는 그보다 약간 나쁩니다.

사유: