PCA 합성 지표 - 메타트레이더 5용 자동 포트폴리오 조정기

Mike 2017.01.26 18:11 44 0 0
첨부파일

이 지표는 모든 기호에 대해 자동으로 계수를 선택하여, 제로에 수렴하는 의사 정적 포트폴리오를 형성합니다.

이 지표를 사용하려면 터미널의 Include\Math 폴더에 AlgLib 라이브러리가 있어야 합니다.


이론적 배경

각 기호는 각자의 방향으로 움직이며, 이 방향은 다차원 배열의 개별 차원으로 볼 수 있습니다. 행렬을 회전시키고, 즉 각 요소를 특정 숫자로 곱함으로써 최소 거리를 갖는 축을 찾으려 합니다. 이 축은 모든 기호와의 거리, 즉 총 분산을 최소화하는 방향입니다. 행렬의 각 요소를 곱하는 숫자는 기호가 다른 기호와 같은 방향으로 움직이도록 회전해야 하는 각도 값이 됩니다. 이 각도 값이 포트폴리오에 있는 각 통화의 계수가 됩니다.

계수 값이 0보다 크면 해당 통화를 매수하고, 0보다 작으면 매도합니다. 따라서, 일정한 시간 간격으로 계수를 재계산하여 생성된 합성을 안정적으로 유지할 수 있습니다. 또한, PCA는 포트폴리오에서 최소 분산을 갖는 축을 찾는 것뿐만 아니라 여러 개의 축을 찾습니다. 포트폴리오의 기호 수가 구성 요소(벡터)의 수가 되며, 각 구성 요소는 주요 구성 요소라고 불리며 포트폴리오의 움직임 변화에 얼마나 영향을 미치는지를 결정합니다.


발생할 수 있는 문제들

  1. 차트가 그려지지 않는 경우, 전문가 탭에서 어떤 메시지가 출력되는지 확인해 보세요. 아마도 오류가 발생했거나 다른 차트와 동기화 중일 수 있습니다. 메시지가 없다면 다른 시간대에서 클릭해 보세요.

  2. 얻어진 벡터 값은 R 패키지에서 계산된 값과 검증되었으므로 값 자체는 정확합니다. 그러나 특정 계수의 부호가 잘못될 수 있습니다. PCA는 부호에 신경 쓰지 않기 때문에, 부호는 실험적으로 결정해야 합니다. 즉, 시행착오를 통해 알아내야 합니다.

문제 #2에 대한 자세한 설명은 이 사진에서 확인하실 수 있습니다: http://stats.stackexchange.com/questions/34396/im-getting-jumpy-loadings-in-rollapply-pca-in-r-can-i-fix-it

파라미터 설정

InpVector = 0; // 포트폴리오에 N개의 통화가 있을 경우, 움직임 축 번호 0 = 최대 분산, N - 1 = 최소
InpFrame = 300; // 계수 계산을 위한 이동 창, 각 InpDepth 바에 대해 InpFrame 계산 수행
InpDepth = 1000; // 차트가 그려지는 역사적 바의 총 수
InpForward = 500; // 계수 재계산을 중지하고 이전 것들을 사용할 바, 이는 OOS
InpPeriod = 1; // MA의 부드러움을 위한 스무딩
InpTimePeriod = PERIOD_CURRENT; // 계산을 위한 시간대
InpNormalize = true; // 가격을 표시하기 전에 정규화하여 USDJPY와 EURGBP의 변동성 차이를 완화
InpSynthetics = true; // 발견된 계수로 합성 지표를 그리거나 각 쌍을 개별적으로 그리기
InpPrices = Logs; // 쌍의 정규화 알고리즘
InpSymbols = "AUDUSD,USDCHF,USDCAD"; // 포트폴리오의 쌍들
InpMagic = "ID" // 충돌 없이 차트에 여러 인스턴스를 배치할 수 있도록 하는 지표의 사용자 정의 이름

이 아이디어는 여기서 채택되었습니다: https://www.mql5.com/en/code/9908

목록
댓글 0