このページの情報が間違っていることによって追徴課税が発生した場合であっても、著者はあなたの不利益の一切の責任を取りません。
bitbankの全期間約定履歴CSVに対して以下のawkスクリプトを使うことで、移動平均法による実現損益の計算ができる。 年内の総利益は、今年の最後のレコードのearningから去年の最後のレコードのearningを差し引いた額となる。
このスクリプトは、すべての取引が日本円ペアであることを前提としている。
BEGIN { revenue = 0; expense = 0; print "date", "time", "revenue", "expense", "earning"; } { valid = 0; pair = $3; type = $4; order = $5; dir = $6; amount = $7; price = $8; fee = $9; date = $11; } dir=="buy"{ valid = 1; accumulated_paid[pair] += amount * price; accumulated_amount[pair] += amount; expense += fee; pair_expense[pair] += fee; } dir=="sell"{ valid = 1; avg_buy_price = accumulated_paid[pair] / accumulated_amount[pair]; profit = (price - avg_buy_price) * amount; accumulated_paid[pair] -= avg_buy_price * amount; accumulated_amount[pair] -= amount; revenue += profit; pair_revenue[pair] += profit; expense += fee; pair_expense[pair] += fee; } valid { print date, revenue, expense, revenue-expense; }
$ cat b.csv | sort | grep -v matic | awk -F, -f a.awk date time revenue expense earning 2022-07-11 14:02:50.745 0 -0.956682 0.956682 2022-07-11 14:07:41.906 3.6176 -1.91409 5.53169 2022-07-11 16:23:48.439 3.6176 -2.86556 6.48316 2022-07-11 16:25:02.811 3.6176 2.50659 1.11101 2022-07-11 16:31:27.159 3.6176 1.72307 1.89453 2022-07-11 16:34:51.998 3.86303 1.66705 2.19598 2022-07-11 16:34:54.552 7.05365 0.938872 6.11477 ...
awkの出力に対して、gnuplotを使う。
↓は出力例。(y軸ticsは隠している) 実現損益のグラフなので、8月の暴落で狼狽売りしたのが丸見え笑。
set xdata time set timefmt "%Y-%m-%d" set format x "%Y-%m-%d" set style data lines set yrange [0:] set xrange ["2023-01-01":system("date +'%Y-%m-%d'")] set decimal locale set ytics format "%'.0f" set mouse mouseformat 3 set grid plot "accumulated.dat" u 1:5 w filledcurves x1 t "earnings"
$ gnuplot -p graph.plt
著者はあなたの不利益の一切の責任を取りません.