-
Notifications
You must be signed in to change notification settings - Fork 259
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
minTargetProfitPercentのチューニングに関して #55
Comments
info.logに時刻と予想収益が表示されているので、grepやsed等で必要な部分を抽出し、ご自身で解析、パラメータの決定をされてはいかがでしょうか? |
また、質問の内容が抽象的過ぎて検討のしようが無いかと思われます。 |
ご指摘ありがとうございます。 繰り返しますが、minTargetProfitPercentの1%の設定をしてその周辺の 200[1%] + (-400[2%]) > 0 となり中々約定されないという意味です。 具体的な計算式としては、あくまとして理想論で 300[平均値+ 3σ] + (-200)[平均値] > 0 となり、約定しやくすくなるのではないかと感じております。 |
申し訳ありませんが、私にはほとんど内容が理解できません。 例えば、この[1%], [2%]は何を意図しているのでしょうか?どのように計算したら >0になるのでしょうか?
|
1%はminTargetProfitPercent、 |
ご理解されているかと思いますが一応。 「config_default.json」の「minTargetProfitPercent」「exitNetProfitRatio」等の値はあくまで設定例です。 また、このような金融プログラムで平均値や偏差値を計算に用いるのは効率が悪いです。 |
そろそろこの辺りの議論になるかと思っていた頃でしたので横から失礼します。 最近の状況としては、exitNetProfitRatioが設定できるようになり格段に便利になり 簡単な例) ■相場の状況 設定上、下記の場合にもオーダーを出します。 しかし、この場合はexitNetProfitRatioの10%を確保するような 相場の状況を鑑みると、下記のケースの方がクローズ 上記の相場では、minTargetProfit: 500ではなく1100であったり1200であったりが パッと考えつくのは、tenten35さんの提案されたような統計情報からの算出です。 上記の例でいうと、 どこまで変数化し、チューニング可能にするかはお任せします。 なかなか文章で伝わらないかもしれませんが、この機能を突き詰めれば |
bitrinjaniさん 私は1日1回、ある計算式を利用してminTargetProfitPercentの設定値を求めております。 ただ、1点懸念があります。 自動チューニングを有効にするかどうかはポリシーに関わってくるところかと思います。 |
@tohyan さん、説明ありがとうございます。もとの質問内容が理解できました。 そこで、以下の案はいかがでしょうか?
2は少し時間がかかると思いますが、1は最近追加したローカルDBを使えば比較的簡単に実装できます。 |
@bitrinjani さん Worstを記録する理由ですが、Bestでオープンした場合に、クローズするのはWorstの組み合わせになる事が多いためです。 |
@tohyanさん |
bitrinjaniさま、ご検討とご提案ありがとうございます。 Connie-Wildさまが懸念されているようなクレームがくることは私も避けたいと思います。 案の2番につきましては、tenten35さまも同意して頂いたように、直近XX回から平均を求める また、当機能は3取引所間での取引に対応するのは複雑になり難しいと思いますので、 |
ここの議論で出すことでは |
これらの機能を追加頂けたおかげで、自動コンフィグチューニングが出来るようになりました。 環境はubuntu16.04を利用しており 統計情報が見れるようになってまた別の楽しみ方が出来るようになりました。 |
部分約定してからonSingleLeg(Proceed)が発動するときの数量が丸められるので収益の計算がへんになるときありますね。
このエクスポージャーが丸々損益に乗っかって表示されてるようです。
|
あぁ、収益って書き方が良くなかったですね |
とても有益な情報ありがとうございます! あと、注文時にこのエラーが出た時は、リトライが実行されてないようです |
すいません、そのイシューも一応目は通していたのですが、"ポジション取得APIの呼び出しに1秒間TTLのキャッシュを追加" とあり、Closeされていたので、修正後は発生しないのかなと思って聞いてみた次第です。 |
自分も発生しますよ |
回答ありがとうございます!やっぱりそうですかぁ…… |
証拠金に対して注文量が多い時に対して表示されるようなエラーですね。 投資計画をしっかりと練った上でツールを利用される事をオススメします。 |
プラグインシステムを追加しました。
enabled: プラグインで動的に変更する機能を有効化 サンプルとして作ったSimpleSpreadStatHandler.jsは、 プラグインの実装方法のドキュメントは後ほど作成します。 |
@bitrinjani さん |
ドキュメントありがとうございます。 |
プラグインに追加されたコードを見てみたのですが、 |
@vol2223 さん |
例えば、minTargetProfitPercentとは別にexitNetProfitRatioも計算しておき、 |
はい、反映されます。 |
ありがとうございます! |
@bitrinjani さん 下記で不変標準偏差を求められていますが 細かくて申し訳なく、間違ってたらごめんなさい! |
@bitrinjani さん |
bitrinjaniさま |
@Connie-Wildさん、たしかに少し意図しているものと違いました。不偏標準偏差を求めたかったので、コンストラクタの初期化では普通の分散にすべきでした。あとで直しておきます。 |
継続的に稼働させている場合、平均値は現在の数値から離れた数字になってしまうため、直近何分かのデータのみを反映させるように変更したいと考えております。 handleメソッド内で毎回ヒストリーを読み込むのは効率が悪いでしょうか。 |
history変数をconstructor内でインスタンス内に保存し、handleメソッド内で新しいデータの追加と古いデータの削除を行えば、一定期間内のデータのみ反映させることが可能です。 class SimpleSpreadStatHandler {
constructor(history) {
this.history = history; // historyを保存
const profitPercentHistory = history.map(x => x.bestCase.profitPercentAgainstNotional);
this.sampleSize = profitPercentHistory.length;
this.profitPercentMean = this.sampleSize != 0 ? ss.mean(profitPercentHistory) : 0;
this.profitPercentVariance = this.sampleSize != 0 ? ss.variance(profitPercentHistory) : 0;
}
async handle(spreadStat) {
this.history = _.tail(this.history); // 最も古いデータを削除
this.history.push(spreadStat); // 最新データを追加
... // 平均・標準偏差等をthis.historyから計算
}
} |
なるほど、そうすればよかったのですね。 わりと自分の思った通りに設定を変更できるようになりました! |
R2の皆様、おはようございます。 早速ですが、 config.json設定で csvデータ分析するとProfitPercentの3分足移動平均+2σが、良いエントリーポイントになると思われました。 |
3分に限定するには、timestampでフィルターすればできると思います。 this.history = this.history.filter(x => x.timestamp > Date.now() - 1000 * 60 * 3) |
いつもながらの素早いレスポンスありがとうございます! |
プログラム未経験者です。ANALYTICS_PLUGIN_JP.mdやみなさんの意見を参考に書き換えたのすが、さっぱりわかりません。 ◯平均値 + 3 * 標準偏差などにも簡単に変更できます。とありますが ◯3分足移動平均によって発注。とありますが async handle(spreadStat) { ご教示、よろしくお願い致します。 |
はい、それであっています。 二つ目の質問については、単純にJavaScriptの文法エラーのように見えます。JS一般の質問は他のサイトにお願いします。 |
@bitrinjaniさん すいません、ソフトウェアの設定に関連する質問とおもい書きましたが、 |
様々な指標を試してきましたが、15分間の移動標準偏差が一番オープンクローズが上手く出来たような気がします。 |
初めまして。自分も使い始めているのですが、小規模のポジションをExpected profit を下げたくさんこなしていくのと、大きめのポジションに絞って Expected profit を大き目で対応するのとかは、どちらが有効なのでしょうか、自身が実験できてないのが難点ですが。ポジションを取るにも口座に置いておく資金量が非常に重要になっているとおもうので。 |
3 * standardDeviationの修正は、ソースを修正後インストールし直す必要があるのでしょうか? |
ヒストリーデータの平均値、分散が、ときどき大きな値になったり小さくなったります。 原因は、通信エラーなどによって、同じブローカーの値を使用してスプレッド値がほぼゼロになることがあり、その値を使った偏差の平均と、分散が計算されているからのようです。 同じブローカーの時は、ヒストリーデータには反映させないようにするには、どうすればいいでしょうか? <spreadStat.csv> |
オープンのminTargetProfitPercentの設定を1%に
設定した場合に、仮にも全平均2%(勿論分散が大きいかもしれませんが)
だとすると価格差が開く傾向にありエグジットできる
可能性が下がると思います。プラスの予想収益
のみのログ(できれば、フィールドに時刻と予想利益を
csvで書き出しできるもの)があり、それを
元に統計を取れば、チューニングの閾値を
各々決定でき裁定機会の頻度が上がるのではないかと
思っております。また、簡易的に平均、分散を出力し、
それらの情報を元にminTargetProfitPercentを自動で決める
というのもありなのかな、と思いますが
個人的には前者の方法がいいのかなと思っております。
ご検討とご意見を頂けると幸いです。
The text was updated successfully, but these errors were encountered: