r2 icon indicating copy to clipboard operation
r2 copied to clipboard

bitFlyerの手数料取扱について

Open Connie-Wild opened this issue 8 years ago • 6 comments

bitFlyerの仕様として、手数料はBTCから徴収される事になっています。 その為、以下の通り注文するとInsufficient fundsが発生してしまいます。

1.0.1BTC オープンオーダ 2.手数料(0.15%)が差し引かれた0.09985BTCが所持BTCとなる。 3.0.1BTC クローズオーダ 4.0.1BTCに満たないためInsufficient fundsが発生

回避策として、bitFlyerのみオープン時にオープン時とクローズ時の手数料を含んだ量を注文する事を考えました。 1.0.1BTC オープンオーダ ⇒ 手数料(0.15%)×2を含んだ注文を実施  ◆注文量式  0.1×100/(100-0.15×2)=0.1003009027081244  小数点第5位(bitFlyerの最小注文単位)で切り上げ  ⇒0.1004BTCを買い注文 2.手数料(0.15%)が差し引かれた0.1002494BTCが所持BTCとなる。 3.0.1BTC クローズオーダ⇒0.1BTCを売り注文 4.手数料(0.15%)が差し引かれ、0.1BTCが売却され、0.0000994BTC=994Satoshiが口座に残る。

これを繰り返すと端数(994Satoshi)が積み重なってくるので、オープンオーダ時に 口座にあるBTC-(オープン済みBTC量×手数料(0.15%))=A Aの数量が「手数料(0.15%)×2を含んだ注文を実施」で算出した 追加分のBTC量を上回っている場合は、手数料分を追加せずそのまま0.1BTCを注文。 とすれば、端数が溜まった時点で手数料として消費できるかと思います。

多分理論的に計算は合ってると思うのですが、どんなもんでしょうか。 ※2/2 10:00に切り上げの小数点の認識が間違っていたので修正しました。

Connie-Wild avatar Feb 01 '18 19:02 Connie-Wild

#9 の件ですね。具体的な提案ありがとうございます。オープンが売りの場合も含め、テストしてみます。

bitrinjani avatar Feb 02 '18 10:02 bitrinjani

ありがとうございます。 確かに #9 の件と同じですね。 売り買い試行許可をNGとするの部分で思考が止まってました。お恥ずかしい。

Connie-Wild avatar Feb 02 '18 14:02 Connie-Wild

初めて書き込みさせて頂きます。 VBAベースでテストしていますが、単純ですが下記で手数料問題を回避しています。 ・オープン時  BF買の場合:発注量=OrderBTCAmount * (1 + BFOrderFee)  BF売の場合:発注量=OrderBTCAmount * (1 - BFOrderFee) ・クローズ時  BF買の場合:発注量=OrderBTCAmount * (1 - BFOrderFee)  BF売の場合:発注量=OrderBTCAmount * (1 + BFOrderFee) 詳細は不明ですが、Bitflyerの取引履歴で見ると小数点以下7桁までの発注量が受理 されているようで、あまり誤差が発生しません。

date-ish-mac avatar Feb 12 '18 16:02 date-ish-mac

初めまして。

既に解決済みかもしれませんが、 自己で開発しているプログラムで同じ考察を行いましたので一応書き込みをさせて頂きます。

まず実際は無視出来る誤差になるかとは存じますが、 手数料は×2ではなく、^2(二乗)が正しいです。

数量は以下になるかと。

買いオープン  数量 * 手数料^2 売りクローズ  数量

売りオープン 数量 * 手数料 買いクローズ  数量 * 手数料

※売りスタート時は[数量 * 手数料^2]の数量が必要になります。

手数料の取り扱いはブローカーに寄って様々で紛らわしいですよね。

usametisia avatar Feb 27 '18 10:02 usametisia

買い・売り後にぴったりゼロにするには、×2でもなく^2でもなく、×(1+c)/(1-c)になると思います。 ここでcは手数料割合(0.0015など)です。 例えば、目標数量0.1, 手数料0.0015とすると、取引は以下となります。

買い: 0.1 * (1+0.0015)/(1-0.0015) = 0.100300450676
買い手数料: 0.1 * (1+0.0015)/(1-0.0015) * 0.0015 = 0.000150450676
買い後のポジション: 0.100300450676 - 0.000150450676 = 0.10015
売り: 0.1
売り手数料: 0.1 * 0.0015 = 0.0015
売り後のポジション: 0.10015 - 0.1 - 0.0015 = 0

どの計算方法でも誤差の範囲なので、実用上はx2で十分かと思います。

なお、この修正はアプリケーションの構造上若干難しい問題があるため現在手をつけていません。bitFlyerで細かい数量を保持しておけば起きないエラーのため、優先度低としています。

bitrinjani avatar Feb 27 '18 12:02 bitrinjani

ご教示ありがとうございます、確かにご指摘の通りですね。 勉強になりました。

どの計算方法でも誤差の範囲なので、実用上はx2で十分かと思います。 付け加えさせて頂くと、実運用していると手数料%は減っていくのでより小さくなりますね。

オープンソースでの開発大変かとは思いますが応援しています、頑張ってください。

usametisia avatar Feb 28 '18 02:02 usametisia