English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
조합론과 트레이딩 확률(4부): 베르누이 논리

조합론과 트레이딩 확률(4부): 베르누이 논리

MetaTrader 5트레이딩 | 8 5월 2024, 10:25
127 0
Evgeniy Ilin
Evgeniy Ilin

콘텐츠


소개

이 시리즈의 이전 글에서 저는 프랙탈을 시장, 특히 가격을 설명하는 도구로 설명했습니다. 이 모델은 시장을 완벽하게 설명합니다 - 이는 계산과 시뮬레이션을 통해 확인되었습니다. 원래의 목적은 가장 간단한 가격 결정 형식을 설명하는 것뿐만 아니라 가격 결정 매개변수 집합과 유사한 매개변수 집합을 가진 모든 벡터 계열에 대한 추가적인 설명을 가능하게 하는 것이었습니다. 일반적인 경우 트레이딩의 행위도 시장의 한 부분이며 이는 시간의 기간과 거래의 프로세스에 나타날 가능성이 있다는 것이 그 특징입니다. 가격과 거래 모두에서 임의의 곡선을 만들 수 있습니다. 가격의 경우 이 곡선이 바로 가격의 내역이 되고 거래의 경우에는 거래의 내역 되는 것입니다.

그런데 가격의 경우는 훨씬 더 명확합니다. 왜냐하면 이러한 시리즈의 모든 멤버가 서로를 명확하게 따르기 때문입니다. 물론 서로 겹치는 가격 계열을 만들 수는 있습니다. 그러나 이러한 분석은 실질적인 이점이 없기 때문에 전혀 쓸모가 없습니다. 백테스트 또는 거래 내역의 경우는 더 복잡합니다. 저는 이러한 과정을 연구하면서 거래 내역 분석 또는 백테스트를 통해 수익성 있고 안정적인 트레이딩을 할 수 있는 훨씬 쉽고 정확한 방법이 있다는 결론에 도달했습니다. 이러한 접근 방식 중 하나를 설명하는 최종적인 문서가 나올 예정입니다. 그러나 아직은 너무 이릅니다.


분석을 할 때 올바르게 데이터를 표현하는 것의 중요성

우리가 수학의 언어로 트레이딩의 내역과 백테스트를 설명할 수 있는 가능성을 분석 하려면 먼저 이러한 분석의 목적과 분석에 따른 가능한 결과를 이해해야 합니다. 이러한 분석에 어떤 부가적인 가치가 있을까요? 사실 당장 명확한 답변을 드리는 것은 불가능합니다. 그러나 점차 간단하고 효과적인 솔루션으로 이어질 수 있는 해답이 있습니다. 이를 위해 먼저 더 자세한 내용을 살펴볼 필요가 있습니다. 이전 기사의 내용을 상기해 보면 다음과 같은 질문이 생깁니다:

  1. 모든 전략을 트레이딩의 프랙탈 설명으로 축소할 수 있을까요?
  2. 가능하다면 이것이 어디에 유용할까요?
  3. 항상 가능한 것이 아니라면 축소 가능성의 조건은 무엇일까요?
  4. 환원성 조건이 충족되면 환원 알고리즘을 개발합니다.
  5. 전략을 설명하는 다른 옵션을 고려하세요. 일반화

이 모든 질문에 대한 답변은 다음과 같습니다. 일부 전략을 프랙탈 설명으로 축소할 수 있습니다. 제가 이 알고리즘을 개발한 사람으로서 이에 대해 자세히 설명하겠습니다. 이는 범용 프랙탈이기 때문에 다른 용도로도 적합합니다. 이제 다음 질문에 대해 생각해보고 답해 봅시다: 난수와 확률 이론의 언어로 거래 내역이란 무엇을 말하는 것일까요? 답은 간단합니다: 이는 고립된 엔티티 또는 벡터의 집합으로 특정 기간에 특정 확률과 시간 활용 계수를 갖는 발생입니다. 이러한 각 엔티티의 주요 특징은 발생의 확률입니다. 시간 사용 계수는 사용 가능한 시간 중 트레이딩에 사용되는 시간을 결정하는 데 도움이 되는 보조 값입니다. 다음 그림이 아이디어를 이해하는 데 도움이 될 것입니다:

데이터 변환 다이어그램

그림에서 사용되는 기호는 다음과 같습니다:

  1. 검은 점 - 거래의 시작
  2. 빨간색 삼각형 - 거래 종료
  3. 주황색 육각형 - 이전 거래의 끝과 다음 거래의 시작
  4. T[i] - 관련 트레이딩 창의 시간
  5. P[i] - 관련 거래의 수익 또는 손실
  6. n - 거래 횟수
  7. m - 거래 창의 수

그림은 옵션 A와 B가 옵션 C로 축소될 수 있다는 것을 보여주는 세 가지 차트를 보여줍니다. 이제 이러한 옵션이 무엇인지 살펴보겠습니다:

  1. 옵션 A는 우리가 가능한 모든 트릭, 자금 관리 등을 사용하는 임의 거래를 보는 방식입니다.
  2. 옵션 B도 동일하지만 한 번에 하나의 주문만 개설할 수 있다는 점을 고려해야 합니다.
  3. 옵션 C는 신호 서비스 또는 백테스트에서 거래를 보는 방식입니다.

여기서 옵션 C가 가장 유익한 정보이며 대부분의 경우 우리는 옵션 C의 표시에 의존합니다. 또한 모든 전략이 이 유형으로 축소될 수 있습니다. 왜냐하면 주식선이 모든 백테스트 또는 트레이딩 신호의 주요 특징이기 때문입니다. 이 라인은 현재 시점의 실제 손익을 반영합니다.

임의 전략의 자산 라인을 분석해 보면 라인이 변경되지 않을 경우 거래 진입 및 청산 지점이 절대적으로 임의의 위치에 위치할 수 있음을 알 수 있습니다. 이는 트레이딩 전략이 매우 다양한 방식으로 표현될 수 있으며 어떠한 방식이든 이들의 자산 라인이 동일하므로 서로 동일하다는 것을 의미합니다. 따라서 우리는 동일한 옵션을 모두 검색할 필요는 없습니다. 이들을 찾는 목적은 무엇일까요?

시간 간격을 발생하는 순서대로 붙이기만 하면 되기 때문에 B 유형의 전략은 C 유형으로 쉽게 전환될 수 있습니다. 실제로 이것이 바로 테스터와 신호 서비스가 하는 일입니다. 그러나 유형 A를 유형 C로 변환하려고 하면 상황이 달라집니다. 이 변환을 구현하려면 먼저 A를 유형 B로 줄인 다음 결과를 유형 C로 줄일 수 있습니다. 이제 독자 여러분은 전략 테스터와 신호 서비스가 어떻게 작동하는지 알게 되셨을 것입니다.

이 변환은 그 자체로는 거래에 실질적인 가치를 부여하지 않습니다. 하지만 우리가 더 깊은 내용을 이해하는 데 도움이 될 수 있습니다. 예를 들어 우리는 다음과 같은 유형의 전략이 있다는 결론을 내릴 수 있습니다:

  1. 두 가지 상태로 설명
  2. 여러가지 상태로 설명
  3. 무한한 수의 상태로 설명

이 글에서는 처음 두 가지 유형의 전략에 대해 설명하는 예시를 보여드리겠습니다. 세 번째 유형은 더 복잡하며 별도의 문서가 필요합니다. 조만간 이 아이디어에 대해 다시 말씀드리겠습니다. 어쨌든 세 번째 유형의 전략을 살펴보기 전에 우리는 처음 두 가지를 이해할 필요가 있습니다. 이 두 가지 유형은 세 번째 유형인 일반 전략을 진행하기 전에 우리가 준비가 되도록 할 것입니다.


이중 상태

이전 글에서 설명한 프랙탈은 실제로 이중 상태 모델을 나타냅니다. 여기서 상태는 위아래로 움직이는 것을 말합니다. 가격이 아닌 거래 잔고 라인에 모델을 적용하면 이 모델도 똑같은 방식으로 작동합니다. 이 모델은 베르누이 체계를 기반으로 합니다. 베르누이 체계는 두 개의 상태를 가진 가장 단순한 프랙탈을 설명합니다:

  • P[k] = C(n,k)*Pow(p,k)*Pow(q,n-k) - 베르누이 공식(P[k]는 특정 조합의 확률)
  • p는 단일 실험의 결과로서 상태 "1"이 될 확률입니다.
  • q는 단일 실험의 결과로 상태 "2"가 나올 확률입니다.

이 공식은 "n" 단계 후에 균형 곡선 또는 첫 번째 상태가 "k"이고 두 번째 상태가 "n-k"인 다른 곡선을 가질 확률을 계산할 수 있습니다. 이것들이 트레이딩 수익일 필요는 없습니다. 이러한 상태는 우리가 고유성을 찾아 볼 수 있는 모든 매개변수 벡터를 상징할 수 있습니다. 특정 조합의 모든 확률의 합은 완전한 그룹을 형성해야 하며 이는 이러한 모든 확률의 합이 1과 같아야 함을 의미합니다. 이것은 "n" 단계에서는 이러한 조합 중 하나가 반드시 나타나야 한다는 사실을 상징합니다:

  • Summ(0...k...n)[ P[k] ] = 1

이 경우 우리는 가격 책정이나 백테스트 및 신호를 설명하기 위해 이러한 것들을 사용하는 데 관심이 있습니다. 전략이 등거리 스탑 레벨에서 청산되는 거래로 구성되어 있다고 상상해 보십시오. 동시에 우리는 미래에 예상되는 가격의 변동을 계산하는 것은 불가능하다는 것을 알고 있습니다. 이러한 확률의 분포는 다음과 같습니다:

이중 상태

이 세 가지 수치는 다음을 보여줍니다:

  1. 랜덤 워크 또는 트레이딩의 확률 분포
  2. 수익성 거래 또는 상승 추세에 대한 확률 분포
  3. 트레이딩 손실 또는 하락 추세에 대한 확률 분포

다이어그램에서 볼 수 있듯이 스텝업 확률에 따라 특정 조합의 확률이 변경되고 다른 모든 확률과 마찬가지로 가장 가능성이 높은 경우가 왼쪽 또는 오른쪽으로 이동합니다. 이 백테스트 또는 가격 표현은 분석에 가장 간단하고 선호되는 모델입니다. 이러한 모델은 가격을 설명하는 데는 충분하지만 트레이딩을 설명하는 데는 충분하지 않습니다. 실제로 잔고 곡선에는 기간과 손익이 다른 다양한 거래가 포함될 수 있습니다. 어떤 트레이딩 지표가 더 중요한지에 따라 여러분은 두 개가 아닌 원하는 개수의 상태를 설정할 수 있습니다.


여러 상태

다음의 예를 참고하십시오: 우리가 거래의 손익 가치에 관심이 있다고 가정해 보겠습니다. 이제 손익 상태는 엄격하게 정의된 세 가지 값을 취할 수 있으며 우리는 각각의 값의 확률도 알 수 있습니다. 그렇다면 이제 우리는 3국 체제를 가지고 있다고 말할 수 있습니다. 두 개의 상태 시스템처럼 가능한 모든 이벤트 전개를 설명할 수 있을까요? 사실은 실제로 가능합니다. 저는 베르누이 체계를 약간 개선하여 상태의 수에 상관없이 시스템에서 작동할 수 있도록 할 것입니다.

베르누이 논리에 따르면 우리는 상태 카운터를 정의해야 합니다:

  • i[0] - 독립적인 실험 체인에서 첫 번째 상태를 가진 결과의 개수
  • i[1]은 연속된 독립적인 실험에서 두 번째 상태를 가진 결과의 수입니다.
  • ...
  • i[N]은 N-상태를 가진 결과의 개수입니다.
  • N은 시스템 상태의 수입니다.
  • 는 상태 번호입니다.

만약 우리가 특정 상태의 발생 횟수를 하나씩 결정하면 다음 상태의 사용 가능한 횟수가 결정됩니다:

  • s[i] = N - Summ(0... k ... i - 1) [ s[k] ]

이는 단순화될 수 있습니다. 이전 상태의 결과 개수를 선택한 경우 다음 상태의 결과 개수는 이전 상태에 대해 선택한 상태 개수와 정확히 동일하게 유지됩니다. 베르누이 체계에서와 마찬가지로 일관성이 없고 동일한 확률을 갖는 연속적인 확률이 있습니다. 그런 다음 모든 상태의 수가 같은 체인의 수는 다음과 같이 계산됩니다:

  • A[h](N,i[0],i[1] ,... i[n]) = C(N , i[0]) * C(N-i[0] , i[1]) *.... C(N-Summ(0...k...n-1)[ i[k] ] ) , i[n])
  • C는 조합입니다.
  • h는 유니크한 스텝 집합입니다.

물론 이러한 집합의 확률은 베르누이 체계에서와 같이 계산될 수 있습니다. 한 세트의 확률에 해당 세트의 수를 곱합니다:

  • P[k] = A[h](N,i[0] ,i[1] ,... i[n]) * Pow(p[0], i[0]) * Pow(p[1], i[1]) ... * Pow(1- Summ(0...j...N-1)[ p[j] ] ] , i[1])
  • p[j]는 특정 상태의 확률입니다.

이해를 돕기 위해 저는 앞의 두 상태와 관련된 예제와 같이 3차원 그래프를 만들었습니다. 다시 30개의 스텝이 있지만 여기서는 두 개가 아닌 세 개의 상태를 사용합니다:

트리플 상태

각 막대는 호환되지 않는 이벤트를 상징하고 이러한 모든 호환되지 않는 이벤트는 완전한 그룹을 형성하기 때문에 이러한 다이어그램의 볼륨은 정확히 1과 같습니다. 다이어그램은 서로 다른 확률 벡터를 가진 두 가지 전략을 보여줍니다. 이 확률은 세 가지 상태 중 하나가 발생할 확률을 나타냅니다.

  • S1은 첫 번째 상태 발생 횟수입니다.
  • S2는 두 번째 상태 발생 횟수입니다.
  • S3 = 30 - S1 - S2 - 세 번째 상태 발생 횟수

우리 시스템에 네 번째 상태가 있다면 4차원적인 방식으로만 표시할 수 있습니다. 5개 주의 경우 5차원 다이어그램이 필요합니다. 사람의 눈은 3차원만 볼 수 있기 때문에 더 복잡한 시스템을 그래픽으로 표현할 수는 없습니다. 그럼에도 불구하고 다차원 함수도 다른 함수들과 마찬가지로 기능적입니다.


여러 상태의 소프트웨어 구현

2 상태의 경우는 1차원 배열로 표현할 수 있습니다. 여러 개의 상태는 어떻게 할까요? 우리는 다차원 배열을 생각해 볼 수 있습니다. 하지만 제가 아는 한 모든 프로그래밍 언어는 기껏해야 2차원 배열을 사용합니다. 일부는 3차원 이상의 배열을 만들 수 있는 기능을 제공하기도 하지만 이는 편리한 옵션이 아닙니다. 더 나은 옵션은 컬렉션이나 tuples을 사용하는 것입니다:

프랙탈 튜플의 구조

이것은 "30" 단계가 있는 상황입니다. 첫 번째와 세 번째 열은 튜플의 내부 구조를 반영합니다. 이것은 배열 속의 배열일 뿐입니다. 예를 들어 "[31,1]"이라고 쓰여 있는 경우 이는 이 행렬 요소가 행과 열이 "31"인 행렬이라는 의미이기도 합니다. 베르누이 공식과 전체 베르누이 체계는 이 보다 일반적인 체계의 특정한 사례입니다. 두 개의 상태가 필요한 경우 튜플은 1차원 배열로 바뀌며 이 경우 우리는 베르누이 공식에서 핵심적인 역할을 하는 간단한 조합을 얻을 수 있습니다.

이 배열 내부에 무엇이 있는지 살펴보면 열 "2"와 "4"가 있습니다. 두 번째 열은 특정 고유 상태 집합의 등가 분기 수이고 네 번째 열은 확률이 같으므로 이러한 분기의 총 확률입니다.

이러한 튜플의 계산을 검증하기 위한 명확한 기준은 전체 이벤트 그룹과 모든 고유 브랜치의 총 개수를 확인하는 것입니다. 이를 위해 내부 구조가 아무리 복잡하더라도 우리는 복잡한 튜플의 모든 요소를 합산하는 일반 함수를 만들 수 있습니다. 위의 스크린샷에 예가 나와 있습니다. 이러한 함수는 반복적이어야 하며 내부에서 스스로를 호출해야 합니다. 이 경우 상태 수와 단계 수에 관계없이 이 함수는 범용 함수가 됩니다. 고유 브랜치 수의 경우 실제 값은 다음과 같이 계산됩니다:

  • Pow(N,n)

즉 시스템 상태의 수를 스텝 수의 거듭제곱으로 늘려야 합니다 - 이렇게 해야 상태를 구성하는 고유한 체인의 가능한 모든 조합을 얻을 수 있습니다. 그림에서 이 숫자는 "CombTotal" 변수로 표시됩니다. 결과 합계가 이 변수와 비교됩니다.

튜플을 계산하려면 동일한 반복 구조를 가진 유사한 함수를 사용해야 합니다:

프랙탈 튜플 계산 함수

보시다시피, 이 둘은 매우 유사합니다. 그러나 몇 가지 차이점이 있습니다. 각 레벨에서 나머지 자유 단계의 조합 수에 결과를 추가로 곱해야 합니다. 확률을 계산할 때 결과에 현재 검사 중인 상태의 확률을 추가로 곱해야 합니다. 또한 이미 누적된 체인 확률을 곱하는 것을 잊지 마세요. 자유 셀이 하나도 남지 않을 때까지 모든 상태를 하나씩 누적하며 셀은 스텝 수입니다.

우리가 알고 있는 데이터에서 상태를 추출하는 예도 생각해 볼 수 있습니다. 예를 들어 거래 통계가 있는데 여기에는 각 주문에 대해 수명, 거래량, 손실 또는 수익 등의 정보가 저장됩니다. 샘플이 유한하기 때문에 상태의 수 또한 유한합니다. 예를 들어 우리는 샘플에 몇 개의 수익 옵션이 있는지 확인할 수 있습니다. 각각의 고유한 수익 값은 고유한 상태로 간주될 수 있습니다. 샘플 전체에서 이러한 모든 수익의 발생 횟수를 세고 전체 거래의 총 수로 나누어 특정 상태의 확률을 구합니다. 모든 주에 대해 이 과정을 반복합니다. 이 모든 확률을 합치면 1이 됩니다. 이 경우 모든 것이 올바르게 수행됩니다. 비슷한 방식으로 우리는 주문 수명에 따라 거래를 분류할 수 있습니다. 즉, 상태는 이벤트의 모든 고유한 특성이 될 수 있습니다. 이 경우 거래는 이벤트로 간주되며 거래 매개변수는 특정 이벤트의 특성입니다. 우리의 경우 상태 예는 다음과 같습니다:

상태 예제

그림은 상태 집합을 컴파일하는 예를 보여줍니다. 규칙에 따르면 상태는 완전한 이벤트 그룹을 형성해야 합니다. 즉 공동 상태가 있어서는 안 됩니다. 이러한 이벤트의 확률은 특정 상태의 테이블에 있는 주문 수를 전체 주문 수(이 경우 7)로 나누어 계산할 수 있습니다. 이것은 주문의 예입니다; 그러나 우리는 다른 상태와도 협력할 수 있습니다.


결론

이 기사에서 저는 데이터 샘플을 평가하는 방법과 데이터를 분류하고 확률을 계산할 수 있는 상태 집합으로 결합하여 이러한 샘플에서 새로운 샘플을 만드는 방법을 보여드리려고 했습니다. 이 데이터로 무엇을 할지는 여러분에게 달려 있습니다. 가장 좋은 방법은 여러 개의 샘플을 생성하고 이를 평가하는 것인데 이를 샘플 클러스터링이라고도 합니다. 샘플 클러스터링은 기존 시스템의 트레이딩의 성능을 향상시키는 좋은 필터의 역할을 할 수 있습니다. 데이터를 클러스터링하고 원하는 수익성 있는 샘플을 찾기만 하면 수익성이 없어 보이는 전략에서 수익을 얻을 수도 있습니다. 그리고 가장 중요한 것은 이러한 메커니즘이 확장 가능한 트레이딩 시스템에서 데이터 처리 단계로 사용될 수 있다는 점입니다. 우리는 이러한 메커니즘을 추후 자체 적응형 트레이딩 시스템을 구축할 때 실제로 적용할 예정입니다. 현재로서는 이것은 또 하나의 과정일 뿐입니다.

참조


MetaQuotes 소프트웨어 사를 통해 러시아어가 번역됨.
원본 기고글: https://www.mql5.com/ru/articles/10063

파일 첨부됨 |
States_Research.zip (1064.01 KB)
조합과 트레이딩을 위한 확률(5부): 곡선 분석 조합과 트레이딩을 위한 확률(5부): 곡선 분석
저는 이 글에서 여러 상태를 이중 상태 시스템으로 축소할 수 있는지 여부와 그 가능성과 관련된 내용을 진행하기로 했습니다. 이 글의 주요 목적은 확률 이론을 기반으로 확장 가능한 트레이딩 알고리즘의 추가적인 개발에 도움이 될 수 있는 유용한 결론을 분석하고 도출하는 것입니다. 물론 이 주제는 수학과 관련이 있습니다. 하지만 이전 기사의 내용을 고려해 보면 저는 세부적인 정보보다는 일반화된 정보가 더 유용하다고 생각합니다.
시장과 시장이 보여 주는 글로벌 패턴의 물리학 시장과 시장이 보여 주는 글로벌 패턴의 물리학
이 글에서는 시장에 대한 이해가 조금이라도 있는 시스템이라면 글로벌 규모로 운영 가능하다는 가정을 테스트해 보려고 합니다. 저는 어떤 이론이나 패턴을 발명하지 않을 것이고 알려진 사실만을 사용하며 이러한 사실을 점차 수학적인 분석 언어로 번역할 것입니다.
시장 수학: 수익, 손실 및 비용 시장 수학: 수익, 손실 및 비용
이 글에서는 수수료와 스왑을 포함한 모든 거래의 총 손익을 계산하는 방법을 보여드리겠습니다. 저는 가장 정확한 수학적 모델을 제공하고 이를 사용하여 코드를 작성하고 표준과 비교할 것입니다. 또한 수익을 계산하고 종목 사양의 모든 값에 접근하고 활용하기 위해 주요 MQL5 함수의 내부에 들어갈 것입니다.
Expert Advisor 개발 기초부터(28부): 미래를 향해(III) Expert Advisor 개발 기초부터(28부): 미래를 향해(III)
아직 우리의 주문 시스템에는 미흡한 부분이 하나 있습니다. 조만간 해결하도록 하겠습니다. MetaTrader 5는 주문 값을 생성하고 수정할 수 있는 티켓 시스템을 제공합니다. 이 아이디어는 동일한 티켓 시스템을 더 빠르고 효율적으로 만들 수 있는 EA를 만드는 것입니다.