通貨ペアのポートフォリオ取引 - ページ 9

 
MetaDriver:

彼らは物語のために存在しているのです。(本当に真っ白で、広告と全く同じであることを確認)。

白くてふわふわしていればいいのだ。フォン・ノイマン=モルゲンシュテルンの定理によれば、ミニマックス値はゲームの価格、すなわち最小期待値である。最適に分散されたポートフォリオは、選択した商品の価格がどのような方向に動いても利益を上げなければなりません。したがって、少なくとも1つのヒストリカル期間において損失を許容する場合、上記の定理によれば、そのポートフォリオの期待ペイオフは負であり、最適分散投資とは言えません。
 
C-4:

また、まともな人であれば、仕組みを理解せずに、ただオープンだからということで使うことはないでしょう。

誰も強制的に使わされることはない。ソースコードは公開されており、基本的な数学的理論やアルゴリズムは秘密ではありません。健全な精神と記憶力を持つ人は、自分でその仕組みを理解することができるのです。あとは休んでください。
 
kharko:

実装では、すべてのバリアントを列挙する必要があります。バリエーション総数は2のN乗であり、Nはポートフォリオに含まれる金融商品の数である。多分、誰かが助けてくれるでしょう - 準備のできたコードで。とてもありがたいことです。

ドローダウンに最適化されています。線がまっすぐになりました。しかし、考えているうちに、ふと疑問が湧いてきた。スプレッドはどのように計算するのですか?結局のところ、どれだけの取引が、どれだけのボリュームで行われるかを知る必要があるのです私のインジケーターではスプレッドは考慮していませんが、スワップでは何ポイント損するか/得するかをカウントしてみたことがあります。最適化の際、スワップは考慮されません。

警告!通貨ペアの数や分析するバーの数が多い場合は使わないことを強くお勧めします。

10通貨ペアのドローダウンで最適化し、パラメータLengh = 100の場合、インジケータは約5秒で初期化されます!我慢してください :)

ファイル:
 

ファイルフォルダにあるはずのET_para.csvファイルへの入力例。

シンボルマーク タイプ
EURUSD1
ユーロGBP0
ユーロスイスフラン1
ユーロ円1
GBPUSD1
米ドルCHF0
米ドル円1
AUDUSD1
米ドルCAD1
NZDUSD0

1行目はヘッダーに使用され、計算には含まれません

ファイル:
et_para.zip  1 kb
 
EvgeTrofi:

ドローダウンに最適化されています。線がまっすぐになりました。しかし、考えているうちに、ふと疑問が湧いてきた。スプレッドはどのように計算するのですか?結局のところ、どれだけの取引が、どれだけのボリュームで行われるかを知る必要があるのです私のインジケーターではスプレッドは考慮していませんが、スワップでは何ポイント損するか/得するかをカウントしてみたことがあります。最適化の際、スワップは考慮されない。

警告!通貨ペアの数や分析するバーの数が多い場合は使わないことを強くお勧めします。

10通貨ペアのドローダウンで最適化し、パラメータLengh = 100の場合、インジケータは約5秒で初期化されます!我慢してください :)

よくやった...。

スプレッド、スワップは考慮されていません。インジケーターはポイントのみ動作します。

ボリューム、スプレッド、ピップ値を考慮すると、仮想エクイティカーブが得られ、それはこれらのパラメーターの正しい値に直接依存します。ポートフォリオ内のすべての商品について、各バーでのpip値を入金通貨で 計算する必要があります。多くの証券会社ではスプレッドの値が異なるため、カーブが大きく歪むことになる。

すべてのオプションを試すためのアルゴリズムに興味があります。是非ともご協力をお願いします。

 

オプションマトリクスは以下のように形成される。

void Sbor(int& Ar[][]){
   //Создание массива вариантов сочитаний действий над валютными парами
   int Begin = 0;
   int Size = MathPow(V, CountSy);
   int min = 0;
   int max = 1;
   if(V==3) min = -1;
   ArrayResize(Ar, Size);
   for(int i = 0; i < Size; i++){ // Варианты (строки)
      for(int j = 0; j < CountSy; j++){ // Инструменты (столбцы)
         if(i==0){
            Ar[i][j]=0;
         }else{
            if(j==0){
               if(Ar[i-1][j]<max){
                  Ar[i][j]++;
               }else{
                  Ar[i][j]=min;
               }
            }else{
               if(Ar[i][j-1]<Ar[i-1][j-1]){
                  if(Ar[i-1][j]<max){
                     Ar[i][j]++;
                  }else{
                     Ar[i][j]=min;
                  }
               }else{
                  Ar[i][j]=Ar[i-1][j];
               }
            }
         }
      }//Next j
   }//Next i
}//Sbor()

このコードを理解しやすくするために、このようなプライベートマトリクスを形成するための数式を記載したExcelスプレッドシートをアップロードしています。

そうすると、ブルートフォースですべてのバリエーションを走らせるしかないですね :)

ファイル:
arvar.zip  5 kb
 
EvgeTrofi:

オプションマトリクスは以下のように形成される。

このコードを理解しやすくするために、このようなプライベートマトリクスを形成するための数式を記載したExcelスプレッドシートをアップロードしています。

あとは、すべてのバリエーションを実行するだけです :)

脊椎炎

よりシンプルなコードを書きました。

void Matrica()
{
   double size = MathPow(2,Num.Para);
   int trend[];
//---
   ArrayResize(trend,Num.Para);
   for(int i=0;i<size;i++)
   {
      int x = i;
      int pos = 0;
      ArrayInitialize(trend,0);
      while(x>0)
      {
         trend[pos] = x % 2;
         pos++;
         x = MathFloor(x / 2);
      }
// Вывод варианта      
   }
}
バリアント番号は2進数で表現されます。


 

ドローダウンとプロフィットファクター(最大ドローダウンに対する現在の残高の比率)の表示を追加しました。この数値が大きいほど、チャートは安定しているように見えます。この値によって最適化が行われる。

最適化に費やした秒数をコメントで表示しています。:)

ファイル:
 

EvgeTrofi:

注目!通貨ペアの数や分析バーの数を多くしないことを強くお勧めします。

10通貨ペア、パラメータLengh=100でドローダウンを最適化した場合、インジケータは約5秒で初期化されます!!!!我慢してください :)

バーの本数 制限を回避する方法を考えた。最適化のための時間間隔を、例えば100のような数字で割る必要があります。区間内に1000本のバーがあれば、1000 / 100 = 10個のタイムポイントが得られ、そこで計算を行うことができる。したがって、数字が小さいほど計算精度が高くなる。
 
kharko:
バーの本数制限を回避する方法を考えました。最適化のための時間を100などの数字で割る必要があります。区間に1000本の棒があれば、1000 / 100 = 10個のタイムポイントが得られ、そこで計算を行うことができる。したがって、数字が小さいほど計算精度が高くなる。

私もこれには頭を悩ませています。セクションの数が少ないほど、調整確率が高いことがわかります。

一方、R-Portfolio は支払行列を使用するが、その中でも最も情報量が多いのは正方形の行列であり、つまり、分析する金融商品の数が多いので、およそ何セクションになるはずである。

しかし、重要なのは、相関の良い商品であっても、ある瞬間に相関の符号が変わることがあるということです。つまり、断片を適当に分解すると、分析結果には、ちょうどそのような悪い瞬間に変化した符号が含まれている可能性があるのです。

簡単に言うと、セクションは等間隔(同じ小節 数)ではなく、ある一つの楽器の極値(例えば、ポートフォリオで最大のシェアを持つ楽器)で分けるべきだという結論に達したのです。例えば、ZigZagや他のアルゴリズムを適用し、トレンドのブレークポイントを検出し、そのポイントによって(そのバーだけ)R-Portfolio(または他のポートフォリオ分析プログラム)にさらに供給するために相場を割り引くことができます。それが一番コーシャで、一番情報量が多い方法だと思われます。そうしないと、例えば横並びの補正変更のポイント間で、ある種のノイズ分析が行われてしまうのです。