English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
통계 캐리 거래 전략

통계 캐리 거래 전략

MetaTrader 5트레이딩 | 11 10월 2021, 16:25
174 0
Ruslan Lunev
Ruslan Lunev

경제적 규제

아담 스미스의 책 "An Inquiry into the Nature and Causes of the Wealth of Nations(국부론)"[1]의 이론에 따르면, 모든 경제 프로세스는 수요와 공급의 힘을 이용하여 시장 경제에 의해 자동으로 규제되어 최적의 상태로 유지됩니다.

하지만 불행히도 현실은 그렇지 않습니다. 시장의 공급과 수요는 종종 왜곡된 금융 관계를 초래하고 경제 위기를 초래합니다.

경제적 불균형의 영향을 줄이기 위해, 정부 규제 당국은 시장 경제를 돕기 위해 관여하고 있습니다.

정부 규제기관의 목적은 다음을 이용하여 경제 프로세스를 간접적으로 통제하는 데 있습니다:

  • 은행 적립금, 즉 보험자금의 누적
  • 할당량을 내보내고 가져오기
  • 세계 경쟁에서 독자적으로 살아남을 수 없는 특정 경제 분야에 보조금을 지급
  • 이자율 조절.

이자율

금리는 중앙은행들이 정부 차원에서 경제 프로세스를 통제하기 위해 사용합니다.

  • 공식 할인율(ODR)은 정부 경제 규제의 가장 효과적인 수단입니다. 이것은 한 중앙은행이 시중은행들에게 돈을 빌린 것에 대해 청구하는 비율입니다.
  • Repo Rate는 중앙은행이 시중은행에서 정부 증권을 회계하고 환매하기 위해 사용합니다.
  • Fund Rate는 적립식 펀드 레이트입니다.
  • Lombard Rate는 담보 대출에 대해 부과되는 이자율입니다.


규제 경제


'자유' 시장 경제 시대에 사는 것에 대한 환상을 갖지 마세요. 아담 스미스의 생각은 유토피아 그 이상입니다. 시장 참여자는 자신의 위험과 유해성에 따라 경제 프로세스를 규제할 필요가 없습니다. 그리고 상업적 이유로 그들은 종종 다음과 같은 반시장적인 것에 투자합니다:

  • 마약 밀매에 대한 투자. 결과적으로 인구의 일부가 무력해지고 범죄율이 높아집니다.
  • 버블에 투자. 그 결과, 재정은 상품의 경제적 생산과 소비의 일부가 되고 대신 복권 사기의 일부가 됩니다. 이러한 투자는 결국 인구의 상당 부분 손실된 저축으로 이어집니다.
  • 파생상품에 대한 투자. 파생상품은 시장 공급과 수요를 불안정하게 하는 요인으로 작용하며 세계적인 위기로까지 이어지는 극적인 경제 변화로 이어집니다.

우리는 규제 경제의 시대에 살고 있습니다. 경제 프로세스가 정부에 의해 직접 통제되는 중앙에서 계획되지는 않지만 규제됩니다.


공식 할인율

특정 국가의 중앙은행이 정한 할인율이 주요 투자 요인 중 하나입니다. 이것은 투자자들, 특히 다른 나라 투자자들에게, 그들이 저축한 돈이 특정 국가의 국화나 국채에 보관되어 있을 때 얻게 될 이익의 비율을 알려줍니다. 할인율이 높을수록 이자가 높아집니다.

따라서 중앙은행들은 할인율을 국가 경제를 규제하기 위해, 즉 필요하다면 금리를 인상하여 투자자를 유치하거나, 경기 과열 시 금리를 낮추기 위해 사용합니다.

하지만 환상에 빠져서는 안 됩니다. 할인율이 높다고 해서 반드시 그 통화의 매력이 더해지는 것은 아닙니다. 투자자들이 고려하는 또 다른 중요한 요소인 인플레이션이 있습니다. 물가상승률이 할인율보다 상당히 높다면 그런 경제에 투자하는 것은 의미가 없습니다.

예를 들어, 짐바브웨 중앙은행은 한때 할인율을 950%로 인상했는데, 짐바브웨의 화폐인쇄업무는 인플레이션과 보조를 맞출 수 없었고 지폐인쇄용지는 지폐의 명목가치보다 더 비쌌기 때문에 투자자들을 겁주기만 했습니다.

할인율이 낮다고 해서 항상 실물경제가 과열된 것은 아니지만 종종 거품이 극도로 만연하다는 신호를 보냅니다.


캐리 트레이드 전략

캐리 트레이드는 긍정적인 스와프를 기반으로 수익을 내는 전략입니다.

통화쌍을 거래할 때 할인율은 매입할 통화의 할인율과 매도할 통화의 차이(즉, 스왑)로 변환됩니다. 따라서 이 차이는 구매 또는 판매에 부정적인 영향을 미칠 수 있습니다. 긍정적인 스와프를 기반으로 돈을 버는 것은 특히 레버리지를 고려할 때 거래자들에게 매력적입니다. 그러나 레버리지(leverage)는 양날의 칼입니다. 즉, 가격이 오픈 포지션과 반대 방향으로 움직이기 시작하면 손실은 미래의 잠재적 이익을 초과하고 마진 콜(margin call)로 이어질 수 있습니다. 따라서 하나의 통화 쌍을 거래하는 스왑을 기반으로 돈을 버는 것은 위험한 모험입니다.

캐리 트레이드는 저주파 거래 전략으로 거래 신호, 연결 장애 등을 지속적으로 모니터링해야 하는 필요성과 같은 고주파 거래와 관련된 문제가 없다는 점과 같은 몇 가지 뚜렷한 장점이 있습니다. VPS 호스팅은 필수 항목이 아닙니다. 이따금씩 통계를 모니터하고 뉴스를 따라가면 됩니다.

이 자료에서는 개방 포지션이 아닌 반대 방향으로 가격이 움직일 경우 발생할 수 있는 잠재적 위험을 보상할 수 있는 캐리 트레이드 보호 전략의 변형을 제공합니다.

통계 캐리 트레이드 전략은 둘 이상의 통화쌍을 포함하기 때문에 상호 상관 관계로 인한 원치 않는 가격이동으로 인한 잠재적 손실을 보상하기 위한 복수통화전략입니다. 그러나 부정적으로 상관된 금융상품에 의해 차단되더라도 자본이익이 점차 증가하도록 그러한 방식으로 시행하고 있습니다.


통계 캐리 트레이드 수학

통계 캐리 트레이드는 다음 가정을 기반으로 합니다:

  1. 통화 쌍의 가격은 플러스 스왑 방향으로 움직여야 합니다.
  2. 두 개 이상의 통화 쌍이 하나의 고도로 유동적인 통화로 인용되는 경우, 그 상관관계는 양수입니다. 따라서 가격 변동은 반대 방향의 포지티브 상관 관계에 의해 취소될 수 있습니다.

그러나 가정은 고정 규칙으로 처리되지 않습니다. 따라서 위의 두 점은 통계 방법을 사용하여 증명해야 하는 가설일 뿐입니다. 투자자의 대다수는 이런 저런 이유로 근본적인 요인에 따라 다른 의견을 가지고 있으며 긍정적인 스와프와 상관없이 리스크를 피하는 것을 선호할 수 있습니다.

캐리 트레이드 보호 전략 변형에는 원치 않는 가격 이동을 상호 취소하는 여러 통화 쌍이 포함되므로, 과거 데이터를 사용한 견적 프로세스에 대한 통계 분석은 매우 철저해야 합니다.

n개의 통화 쌍이 사용되는 매우 간단한 경우, 견적 프로세스의 통계 모형은 다음과 같은 선형 방정식입니다:

v1 * d1 + v2 * d2 + …  + vn * dn  = profit

여기서:

n 은 금융상품의 총 수입니다.
v1, v2, …, vn 은 관련 금융상품에서 개설되는 포지셔닝 볼륨입니다. 볼륨 값이 음수이면 단기 포지션이 열립니다.
d1, d2, …, dn 은 금융상품의 1거래일에 걸친 평균 가격 변동입니다.
profit 은 1거래일의 평균 이익입니다.

이 공식은 두 가지 금융상품에 대해 단순화할 경우 더 짧아집니다:
v1 * d1 + v2 * d2 = profit

변환합니다:
d1  =  (-v2 * d2 + profit) / v1

이 경우 다음과 같이 가정합니다:
v1 = 1
y = d1
a = -v2
b = profit
우리는 하나의 인수와 두 개의 알 수 없는 선형 방정식의 전형적인 공식을 구합니다:
y = a * x + b

알 수 없는 a와 b는 일반적인 최소 제곱법을 사용하여 계산할 수 있습니다.

그런 다음, 스왑을 사용하여 이익 크기를 지정하고 1거래일 동안의 잠재적 이익의 최종 결과를 얻어야 합니다:
b’ = b – swap1 + a * swap2


여기서:

wap1, swap2는 관련 개방형 포지션 방향에 대해 1거래일에 걸쳐 계산된 통화 쌍의 스왑입니다.


기사에 나와 있는 알고리즘 전략은 두 가지 조건의 동시 만족을 전제로 하기 때문입니다:

  1. 통화 쌍의 볼륨과 방향이 선택되어 평균적으로 수익성이 있습니다.
  2. 전략과 관련된 모든 통화 쌍의 스왑은 양수여야 합니다.

위의 조건에 따라 마지막 공식을 사용한 추가 테스트는 불필요해집니다.


예시

공식에 y = a * x + b, b = profit 이 포함되는 이유는 무엇입니까?

계산 예제


식별자 yx로 표시된 두 통화 쌍의 일일 가격 이동을 다음 공식으로 설명할 수 있다고 가정합니다:

y = 2 * x + 1

이를 유사한 공식으로 변환합니다:
y – 2 * x = 1


즉, 첫 번째 금융상품에서 장기 포지션을 열어야 하며(양수 표시), 두 번째 금융상품에서, 첫번째 포지션(a = 2)의 두배 크기가 되는, 단기 포지션(음수 표시)을 열어햐 합니다.

우리의 예에서 현재 상품 가격은 10과 8입니다.

두 번째 금융상품의 가격이 1거래일 동안 1 상승했다고 가정합니다. 즉, 9에 도달했다고 가정합니다. 따라서 첫 번째 악기의 가격은 평균적으로 2 * x + 1 = 2 * 1 + 1 = 3으로 변동하며 13에 도달합니다(상관 관계가 양수이기 때문에 두 상품의 가격이 동시에 상승). 두 번째 상품의 포지션이 짧기 때문에 상품의 손실은 2가 되는 반면, 장기 포지션의 첫 번째 상품은 3이 됩니다. 차이, 즉, 이익은 +1이 됩니다.

다음 거래일에 이어 두 번째 금융상품 가격이 1 하락하여 이전 값인 8로 돌아간다고 가정합니다. 이 경우 첫 번째 계측기 가격도 2 * x + 1 = 2 * -1 + 1 = -1 값이 감소하며 12가 됩니다. 결과 계산: 첫 번째 금융상품에 1의 손실이 있고 두 번째 금융상품에 2의 이익이 있습니다. 최종 결과는 다시 +1입니다. 즉, 가격 이동 방향과 범위에 관계없이 평균적으로 공식에 명시된 금액과 식별자 b로 표시된 금액에서 이익을 얻을 수 있습니다.

따라서 선형방정식의 공식에 대해 알면 가격방향에 관계없이 평균이익을 얻을 수 있도록 상호연관된 두 금융상품에서 오픈 포지션의 방향과 부피를 결정할 수 있습니다.


그러나 공식이 최소 제곱법으로 계산되므로, 즉 통계적 접근 방식을 따르고 과거 데이터를 사용하여 너무 캐리하지는 마십시오. 그것은 어떤 미래 이익도 보장하지 않습니다. 선택된 시장 진입 방향이 과거 데이터를 사용할 때와 거래할 때 모두 수익성이 있는지 확인할 수 있는 통계가 필요합니다. 미래에 계산에 따라 예상대로 되지 않는다면, 우리는 여전히 스와프의 차이로부터 이익을 얻을 수 있을 것입니다.

실행

수동 계산에는 너무 많은 부담이 있으므로 최소 제곱법 계산은 Expert Advisor에게 할당하는 것이 좋습니다.

The Expert Advisor는 평균 이익을 얻기 위해 두 개의 금융상품에서 포지셔닝 방향과 볼륨을 계산합니다. 그런 다음 서버에서 선택한 시작 포지션 방향에 대한 스왑 값에 대한 정보를 제공하도록 요청하며, 두 스왑 값이 모두 양수이어야 하고, 권장 사항을 제공합니다.

Expert Advisor 소스 코드:

//+------------------------------------------------------------------+
//|                                        StatisticCarryTrading.mq5 |
//|                                  Copyright 2012, Ruslan V. Lunev |
//|                              https://www.mql5.com/ru/articles/491 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, Ruslan V. Lunev"
#property link      "https://www.mql5.com/ru/articles/491"
#property version   "1.00"

// Second currency pair
input string secondpair="AUDUSD";
// Statistics collection period in bars
input int p=100;


// Arrays for storing historical opening prices
double open0[];
double open1[];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // Reading the time series of opening prices
   // for the currency pairs involved
   CopyOpen(_Symbol,PERIOD_D1,0,p+1,open0);
   ArraySetAsSeries(open0,true);
   CopyOpen(secondpair,PERIOD_D1,0,p+1,open1);
   ArraySetAsSeries(open1,true);

   int i=0;

   double pp=p;

   double s1 = 0;
   double s2 = 0;
   double s3 = 0;
   double s4=open1[0]-open1[p];
   double s5=open0[0]-open0[p];

   double averagex = s4 / pp;
   double averagey = s5 / pp;

   for(i=0; i<p; i++) 
     {
      double x0 = open1[i] - open1[i + 1];
      double y0 = open0[i] - open0[i + 1];
      double x1 = x0 - averagex;
      double y1 = y0 - averagey;
      s1 = s1 + x1 * x1;
      s2 = s2 + y1 * y1;
      s3 = s3 + x1 * y1;
     }
   
   // Pearson's linear correlation coefficient
   double r=s3/MathSqrt(s1*s2);

   // Calculation of proportions of opening positions sizes given the contract sizes
   double a = signum(r) * SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE) * MathSqrt(s2) 
   / (MathSqrt(s1) * SymbolInfoDouble(secondpair, SYMBOL_TRADE_CONTRACT_SIZE));
   
   // Calculation of the average daily profit
   double b = averagey - averagex * a;

   // Derive the resulting formula of joint price movement
   if(b>0) 
     {
      Print(_Symbol+" = ",a," * "+secondpair+" + ",b);
        } else {
      Print(_Symbol+" = ",a," * "+secondpair+" - ",MathAbs(b));
     }

   a=-a*signum(b);

   // Recommendations
   string recomendation="Buy "+_Symbol;

   if(b<0) 
     {
      recomendation="Sell "+_Symbol;
      if(SymbolInfoDouble(_Symbol,SYMBOL_SWAP_SHORT)<0.0) 
        {
         recomendation="Short positions swap in "+_Symbol+" is negative";
         MessageBox(recomendation,"Not recommended",1);
         return(0);
        }
        } else {
      if(SymbolInfoDouble(_Symbol,SYMBOL_SWAP_LONG)<0.0) 
        {
         recomendation="Long positions swap in "+_Symbol+" is negative";
         MessageBox(recomendation,"Not recommended",1);
         return(0);
        }
     }

   if(a<0) 
     {
      recomendation=recomendation+"\r\nSell "+a+" "+secondpair;
      if(SymbolInfoDouble(secondpair,SYMBOL_SWAP_SHORT)<0.0) 
        {
         recomendation="Short positions swap in "+secondpair+" is negative";
         MessageBox(recomendation,"Not recommended",1);
         return(0);
        }
        } else {
      recomendation=recomendation+"\r\nBuy "+a+" "+secondpair;
      if(SymbolInfoDouble(secondpair,SYMBOL_SWAP_LONG)<0.0) 
        {
         recomendation="Long positions swap in "+secondpair+" is negative";
         MessageBox(recomendation,"Not recommended",1);
         return(0);
        }
     }

   double profit=MathAbs(b)/SymbolInfoDouble(_Symbol,SYMBOL_POINT);

   if((SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==5) || (SymbolInfoInteger(_Symbol,SYMBOL_DIGITS)==3)) 
     {
      profit=profit/10;
     }

   recomendation = recomendation + "\r\nCorrelation coefficient: " + r;
   recomendation = recomendation + "\r\nAverage daily profit: "
   + profit + " points";


   MessageBox(recomendation,"Recommendation",1);

   return(0);
  }

// Step function - Signum
double signum(double x) 
  {
   if(x<0.0) 
     {
      return(-1.0);
     }
   if(x==0.0) 
     {
      return(0);
     }
   return(1.0);
  }
//+-----------------------The End ------------------------

Expert Advisor에는 두 가지 입력 매개 변수가 있습니다:

  • p는 일별 막대에서 계산에 필요한 모든 통계를 제공하는 기간입니다. 이 매개변수 값은 첫 번째와 두 번째 쌍에 세 통화가 표시된 국가의 중앙은행에 의해 이루어진 마지막 할인율 변동 시간을 초과하지 않는 것이 좋습니다.
  • secondpair는 두 번째 금융상품입니다. 첫 번째 금융상품은 Expert Advisor가 첨부된 차트의 통화 쌍입니다. 포인트 계산에 사용된 통화가 첫 번째 통화의 통화와 일치하도록 두 번째 쌍을 선택합니다(통화 쌍 식별자의 마지막 세 문자). 예: EURUSD 및 AUDUSD 또는 GBPJPY 및 NZDJPY 등입니다. 두 번째 쌍을 선택하기 전에 계약 사양을 확인하여 긍정적 스왑을 해야 합니다.


Expert Advisor는 D1 기간 동안 실행되는 첫 번째 통화 쌍의 차트에 첨부되어야 하며 두 번째 통화 쌍은 입력 매개 변수에 명시되어야 합니다.

그런 다음 입력 매개 변수에 설정된 여러 막대 'p'에 대한 계산이 수행되고 권장 사항이 표시됩니다.

제공된 권고 사항이 거래자에게 적합한 경우, 전문 어드바이저의 지시에 따라 지시된 방향과 볼륨에 따라 수동으로 포지션을 열 수 있습니다. 그 후에는 채택된 전략이 저주파 전략이기 때문에 Expert Advisor를 차트에서 제거할 필요가 없으며 터미널을 서버에 지속적으로 연결할 필요가 없습니다. 대신 Expert Advisor는 터미널에 액세스할 때마다 이전과 동일한 권장 사항을 제공하거나 브로커의 스왑 속도 또는 과거 데이터에 기반한 통계의 변경에 따라 거래자가 이전 전략을 즉시 변경하고 모든 거래 주문을 닫을 수 있는 "권장되지 않음" 메시지를 표시합니다. 이미 배치되었습니다.


경고

금융상품은 시간 독립적이지 않으며 결과적으로 통계적 매개변수가 시간에 따라 변경될 수 있다고 알려져 있습니다. 따라서 통계를 사용하여 이 전략에 따라 계산된 볼륨 값과 통화 쌍 방향은 예측된 것이 아니라 반대로 지시된 통화 쌍의 교차 상관 관계에 의해 취소되더라도 가격이 양의 할인율 방향으로 이동한다는 가설을 확인합니다. 즉, 할인율이 높은 통화에 대한 시장 수요가 통계적으로 확인됩니다.


참고 자료

  1. Smith, А., An Inquiry of the Nature and Causes of the Wealth of Nations(애덤 스미스, 국부론). — М.: Eksmo, 2007. — Series: The Anthology of Economic Thought(시리즈: 경제 사상 문헌) — 960 p. — ISBN 978-5-699-18389-0

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

신경망 네트워크: 이론에서 실전까지 신경망 네트워크: 이론에서 실전까지
요즘, 모든 거래자들은 신경망에 대해 들어봤을 것이고, 신경망을 사용하는 것이 얼마나 멋진지 알고 있을 것입니다. 대다수는 신경망을 다룰 수 있는 사람들이 일종의 초인적인 존재라고 믿습니다. 이 기사에서는 신경 네트워크 아키텍처를 설명하고, 그 적용 사례를 설명하며, 실제 사용 사례를 보여 드리겠습니다.
표준 라이브러리의 거래 전략 클래스에 대해 알아보기 - 전략 사용자 정의하기 표준 라이브러리의 거래 전략 클래스에 대해 알아보기 - 전략 사용자 정의하기
이 기사에서는 MQL5 마법사의 패턴 및 모델 로직을 사용하여 표준 거래 전략 클래스 라이브러리를 탐색하는 방법과 사용자 지정 전략 및 필터/신호를 추가하는 방법에 대해 설명합니다. 결국 MetaTrader 5 표준 지표를 사용하여 자신만의 전략을 쉽게 추가할 수 있으며, MQL5 Wizard는 깨끗하고 강력한 코드와 완벽한 기능을 갖춘 Expert Advisor를 만들 것입니다.
MetaTrader Market에서 거래용 로봇을 구입하여 설치하는 방법은 무엇입니까? MetaTrader Market에서 거래용 로봇을 구입하여 설치하는 방법은 무엇입니까?
MetaTrader 마켓의 제품은 MQL5.com 웹 사이트에서 구입하거나 MetaTrader 4 및 MetaTrader 5 트레이딩 플랫폼에서 직접 구입할 수 있습니다. 거래 스타일에 맞는 상품을 선택하고 선호하는 결제 방법으로 결제한 후 제품을 활성화하세요.
MetaTrader 모바일 터미널의 MetaQuotes ID MetaTrader 모바일 터미널의 MetaQuotes ID
Android와 iOS로 구동되는 장치는 우리가 알지도 못하는 많은 기능을 제공합니다. 이러한 기능 중 하나는 전화번호나 모바일 네트워크 운영자에 관계없이 개인 메시지를 수신할 수 있는 푸시 알림입니다. MetaTrader 모바일 단말기(터미널)는 이미 거래 로봇으로부터 이러한 메시지를 바로 받을 수 있습니다. 장치의 MetaQuotes ID를 알고 있어야 합니다. 이미 9000,000개 이상의 모바일 단말기가 이를 수신했습니다.