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

 
그리고 예측의 결과는 무엇입니까? 감히 물어보십시오.
 
mytarmailS :
그리고 예측의 결과는 무엇입니까? 감히 물어보십시오.
라고 물으신다면 아마 단호하게 대답할 수 없을 것 같고, 예상되는 것들이 많고 모든 것이 다릅니다. 그러나 평균적으로 약 60-65%
 

다음은 훈련 모델을 위해 준비된 플레이트입니다.

가격은 열 델타로 변환됩니다. 변경 사항 없이 또는 해당 사항 없음으로 열을 제거했습니다.

각 열에 대해 각 줄에 3개의 지연을 푸시했습니다(현재 줄 빼기 이전, 이전 빼기 이전, 이전 이전 빼기 이전)

목표는 다음 줄에 있는 값의 상승/하강입니다(다음 줄에서 현재 값을 뺀 값, +-1로 반올림되거나 변경 사항이 없으면 0, 총 3개 클래스). 모든 대상에는 "target_" 접두사가 붙습니다.

*특정 목표를 예측하기 위해 다른 목표를 사용할 수 없습니다. 그렇지 않으면 미래를 엿볼 수 있습니다. "target_" 접두사가 있는 모든 열은 예측 변수 또는 입력으로 사용할 수 없습니다.

파일:
 

문제.

나는 csv 파일을 훈련 데이터와 프론트 테스트에 대해 10:1의 비율로 줄별로 두 부분으로 나눴습니다. target_SiH7.bid에 대한 모델을 훈련하고(위 표에서) 훈련에서 62%, 새 데이터에서 74%의 분류 정확도를 받았습니다. 반가웠지만 다시 확인해보니 0등급은 다른 것들에 비해 굉장히 불균형이 컸고 양적으로는 60%, 74%였습니다. 즉, 모델은 0 우물을 감지하는 방법을 학습했으며 클래스 -1 및 1에서 점수를 매겼습니다.

다른 평가가 필요합니다. 2개의 불균형 클래스의 경우 이 메트릭은 훌륭합니다. https://en.wikipedia.org/wiki/Cohen's_kappa 하지만 우리의 경우 2개가 아닌 3개의 불균형 클래스가 있습니다. 3에 대한 Kappa의 유사점이 있습니까?

 
독성 :
라고 물으신다면 아마 단호하게 대답할 수 없을 것 같고, 예상되는 것들이 많고 모든 것이 다릅니다. 그러나 평균적으로 약 60-65%

흥미롭네요. 자세히 설명해 주시겠습니까?

다만 저는 현재 전혀 다른 분야의 예측에 종사하고 있고, 이 시장 날짜에 여러분과 실험을 할 수 없기 때문에 흩어질 여유가 없을 뿐이지만, 읽고 관찰하는 것이 저에게는 매우 흥미롭습니다. , 더 써주세요 ...

Dr.Trader :

클래스 0은 다른 것들에 비해 매우 불균형한 것으로 나타났고, 숫자로만 보면 60%와 74%입니다. 즉, 모델은 0 우물을 감지하는 방법을 학습했으며 클래스 -1 및 1에서 점수를 매겼습니다.

역전을 위해 랜덤 포레스트를 훈련할 때도 같은 문제가 있었습니다. 물론 역전이 아닌 것보다 역전이 훨씬 적었습니다. 그가 더 많은 나무를 만들수록 턴 클래스에서 더 많은 MO 점수를 얻었고 비턴 클래스에 더 집중했습니다.

Caret 에는 클래스 균형을 조정하는 여러 가지 방법이 있지만 모두 평범한 유형입니다. 모든 클래스의 관찰 합계가 동일하도록 균등화하기 위해 클래스를 복제하거나 그 반대의 경우 클래스에서 불필요한 관찰을 제거합니다. 더 많은 관찰이 있는 곳

어떤 방법도 균형을 맞추지 않는 것보다 어떻게 든 더 수익성이 있는 것으로 나타났습니다(그러나 이것은 독점적인 경우입니다).

 
mytarmails :

흥미롭네요. 자세히 설명해 주시겠습니까?

다만 저는 현재 전혀 다른 분야의 예측에 종사하고 있고, 이 시장 날짜에 여러분과 실험을 할 수 없기 때문에 흩어질 여유가 없을 뿐이지만, 읽고 관찰하는 것이 저에게는 매우 흥미롭습니다. , 더 써주세요 ...

역전을 위해 랜덤 포레스트를 훈련할 때도 같은 문제가 있었습니다. 물론 역전이 아닌 것보다 역전이 훨씬 적었습니다. 그가 더 많은 나무를 만들수록 턴 클래스에서 더 많은 MO 점수를 얻었고 비턴 클래스에 더 집중했습니다.

Caret 에는 클래스 균형을 조정하는 여러 가지 방법이 있지만 모두 평범한 유형입니다. 모든 클래스의 관찰 합계가 동일하도록 균등화하기 위해 클래스를 복제하거나 그 반대의 경우 클래스에서 불필요한 관찰을 제거합니다. 더 많은 관찰이 있는 곳

어떤 방법도 균형을 맞추지 않는 것보다 어떻게 든 더 수익성이 있는 것으로 나타났습니다(그러나 이것은 독점적인 경우입니다).

캐럿에서는 일부 매개변수를 통해 기차 함수의 피트니스 함수를 변경할 수 있습니다. 분류를 위해 정확도 또는 kappa:를 사용할 수 있고 r ^ 2 및 다른 것과 같은 두 가지 옵션 중 일부의 회귀를 사용할 수 있습니다. 나는 거기에서 방금 카파를 배웠습니다. 추가 작업 없이 매우 불균형한 클래스에서 모델을 정상적으로 훈련하는 데 도움이 되었습니다.
 
반전에 대해 논의하고 있다면 의미 있는 방식으로 클래스의 균형을 맞출 필요가 있습니다. 하나의 막대가 아니라 반전 이전의 여러 막대와 반전 후의 여러 막대가 반전으로 계산됩니다. 모두 같으면 클래스의 균형이 맞지 않지만 치명적이지는 않으며 캐럿으로 균형을 잡을 수 있습니다.
 
독성 :

모든 것이 논의됩니다. 예를 들어 Si , RI , BR 등과 같은 요새 선물을 제안했습니다. 일반적으로 가장 액체. 결과적으로 나는 신호(-1,0,1)(short, cash, long)를 제안하는데, 신호는 확률보다 명확하고 MM 에 의해 왜곡되지 않는다 요청처럼. 포스트 프로봇카, 표지판과 표적은 주인의 일 또는 명령입니다.

고민 끝에 한 잔 더 추가해야 한다는 결론에 이르렀습니다{ price : vol ,…||…, price : vol } 그대로, 각 예측 상품에 대해 초당 마지막 하나, 델타가 필요하지 않고 입찰가, 요청도, 이것은 IMHO가 필요합니다. 초당 테이프에 별도의 볼륨과 오프셋이 있는 경우 다소 유익한 OI, 유리의 경우 하나의 델타로는 충분하지 않으므로 최소한 다른 "판", 분포 등을 볼 필요가 있습니다. 모든 것이 시작하기에 충분한 것 같습니다. 유리를 추가하고 며칠 동안 훈련 데이터 세트를 게시하면 재생됩니다. :)

 

마지막으로 Scott의 Pi 메트릭 https://en.wikipedia.org/wiki/Scott's_Pi

다음은 이 추정치에 대한 내 결과입니다. 행의 처음 91%에서 모델을 훈련한 다음 마지막 남은 데이터에 대해 전면 테스트를 수행했습니다(backtest : fronttest = 10:1 비율).
테이블의 "class_0_rate" 열 - 이 값이 너무 높은 Excel에서 해당 결과를 필터링할 수 있도록 클래스 0 대 클래스 -1 및 1의 비율.

마지막 두 열은 교육 및 테스트를 위한 Scott의 Pi 메트릭이며 값은 -1에서 1 사이입니다. 여기서 0=결과가 무작위이고 모델이 쓸모가 없으며 1=모든 것이 정상입니다. 음의 결과 - 별로 좋지 않음, 역상관관계, 예측 결과를 반전시키려고 할 수 있습니다. 역상관은 때때로 예측한 것과 완전히 반대되는 거래를 할 때 두 클래스에서 아주 잘 작동합니다. 그러나 세 개의 클래스로 "반대"를 찾기가 어떻게 든 어렵습니다. 각 클래스는 두 개의 반대 클래스에 해당합니다. krch이 경우 부정적인 평가도 좋지 않습니다.

Krch는 입찰(또는 요청) 예측이 xagusd와 같이 백테스트 및 프런트 테스트에서 유사하고 더 높은 평가 값을 갖는 통화를 선택해야 합니다. 0에서 1까지의 척도에서 0.18의 점수는 낮지만. 그리고 실제 거래에서 한 틱 앞서 예측하는 것도 좋지 않습니다. 일반적으로 결과는 다음과 같지만 적용할 수 없습니다. :)

Scott의 Pi에 대한 R 코드

ScottsPi <- function(act, pred){
   if (length(act) != length(pred)){
    stop( "different length" )
  }
  
  n_observ <- length(act)
  
  all_levels <- unique(c(act,pred))
  n_levels <- length(all_levels)
  
  marginal_matrix <- matrix(NA, ncol=n_levels, nrow=n_levels)
  colnames(marginal_matrix) <- all_levels
  rownames(marginal_matrix) <- all_levels
  
   for (i in 1 :n_levels){
     for (j in 1 :n_levels){
      marginal_matrix[i,j] <- sum((act==all_levels[i]) & (pred==all_levels[j]))
    }
  }
  diagSum <- 0
   for (i in 1 :n_levels){
    diagSum <- diagSum + marginal_matrix[i,i]
  }
  diagSum <- diagSum / n_observ
  
  marginalSum <- 0
   for (i in 1 :n_levels){
    marginalSum <- marginalSum + ((sum(marginal_matrix[i,]) + sum(marginal_matrix[,i]))/n_observ/ 2 )^ 2
  }
  p <- marginalSum
   return ((diagSum - p)/( 1 -p))
}
 
트레이더 박사 :

마지막으로 Scott의 Pi 메트릭 https://en.wikipedia.org/wiki/Scott's_Pi

다음은 이 추정치에 대한 내 결과입니다. 행의 처음 91%에서 모델을 훈련한 다음 마지막 남은 데이터에 대해 전면 테스트를 수행했습니다(backtest : fronttest = 10:1 비율).
테이블의 "class_0_rate" 열 - 이 값이 너무 높은 Excel에서 해당 결과를 필터링할 수 있도록 클래스 0 대 클래스 -1 및 1의 비율.

마지막 두 열은 교육 및 테스트를 위한 Scott의 Pi 메트릭이며 값은 -1에서 1 사이입니다. 여기서 0=결과가 무작위이고 모델이 쓸모가 없으며 1=모든 것이 정상입니다. 음의 결과 - 별로 좋지 않음, 역상관관계, 예측 결과를 반전시키려고 시도할 수 있습니다. 역상관은 때때로 예측한 것과 완전히 반대되는 거래를 할 때 두 클래스에서 아주 잘 작동합니다. 그러나 세 개의 클래스로 "반대"를 찾기가 어떻게 든 어렵습니다. 각 클래스는 두 개의 반대 클래스에 해당합니다. krch이 경우 부정적인 평가도 좋지 않습니다.

Krch는 입찰(또는 요청) 예측이 xagusd와 같이 백테스트 및 프런트 테스트에서 유사하고 더 높은 평가 값을 갖는 통화를 선택해야 합니다. 0에서 1까지의 척도에서 0.18의 점수는 낮지만. 그리고 실제 거래에서 한 틱 앞서 예측하는 것도 좋지 않습니다. 일반적으로 결과는 다음과 같지만 적용할 수 없습니다. :)

Scott의 Pi에 대한 R 코드

ScottsPi <- function(act, pred){
   if (length(act) != length(pred)){
    stop( "different length" )
  }
  
  n_observ <- length(act)
  
  all_levels <- unique(c(act,pred))
  n_levels <- length(all_levels)
  
  marginal_matrix <- matrix(NA, ncol=n_levels, nrow=n_levels)
  colnames(marginal_matrix) <- all_levels
  rownames(marginal_matrix) <- all_levels
  
   for (i in 1 :n_levels){
     for (j in 1 :n_levels){
      marginal_matrix[i,j] <- sum((act==all_levels[i]) & (pred==all_levels[j]))
    }
  }
  diagSum <- 0
   for (i in 1 :n_levels){
    diagSum <- diagSum + marginal_matrix[i,i]
  }
  diagSum <- diagSum / n_observ
  
  marginalSum <- 0
   for (i in 1 :n_levels){
    marginalSum <- marginalSum + ((sum(marginal_matrix[i,]) + sum(marginal_matrix[,i]))/n_observ/ 2 )^ 2
  }
  p <- marginalSum
   return ((diagSum - p)/( 1 -p))
}
데이터는 완전히 decl이고, 동지는 던질 일반 데이터 세트를 매달았지만 어딘가에서 길을 잃었습니다. 글쎄, 세부 사항이 없다면 물론 앞의 틱이 실제로 결정됩니다. 최소한 1 분이 앞서야합니다. 분의 전송에는 이미 순수한 MM, 양쪽에 토비시 리미터가 있으며 확산에 비례하는 거리에 있습니다. , "양자 거품"이 있고, 확산보다 훨씬 작기 때문에 방향을 이야기하는 것은 의미가 없습니다.
사유: