-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathBitsoFeeStructure.java
More file actions
101 lines (95 loc) · 4.79 KB
/
Copy pathBitsoFeeStructure.java
File metadata and controls
101 lines (95 loc) · 4.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.bitso;
import java.math.BigDecimal;
public class BitsoFeeStructure {
// Numbers from https://bitso.com/fees
// Accessed July 28, 2015
public static BigDecimal getFeeInPercentage(BigDecimal thirtyDayVolume) {
if (thirtyDayVolume.compareTo(new BigDecimal("1")) <= 0) {
return new BigDecimal("1");
} else if (thirtyDayVolume.compareTo(new BigDecimal("2.5")) <= 0) {
return new BigDecimal("0.95");
} else if (thirtyDayVolume.compareTo(new BigDecimal("4")) <= 0) {
return new BigDecimal("0.9");
} else if (thirtyDayVolume.compareTo(new BigDecimal("6.5")) <= 0) {
return new BigDecimal("0.85");
} else if (thirtyDayVolume.compareTo(new BigDecimal("9")) <= 0) {
return new BigDecimal("0.8");
} else if (thirtyDayVolume.compareTo(new BigDecimal("12")) <= 0) {
return new BigDecimal("0.75");
} else if (thirtyDayVolume.compareTo(new BigDecimal("18")) <= 0) {
return new BigDecimal("0.7");
} else if (thirtyDayVolume.compareTo(new BigDecimal("25")) <= 0) {
return new BigDecimal("0.65");
} else if (thirtyDayVolume.compareTo(new BigDecimal("32")) <= 0) {
return new BigDecimal("0.60");
} else if (thirtyDayVolume.compareTo(new BigDecimal("40")) <= 0) {
return new BigDecimal("0.55");
} else if (thirtyDayVolume.compareTo(new BigDecimal("55")) <= 0) {
return new BigDecimal("0.5");
} else if (thirtyDayVolume.compareTo(new BigDecimal("75")) <= 0) {
return new BigDecimal("0.45");
} else if (thirtyDayVolume.compareTo(new BigDecimal("100")) <= 0) {
return new BigDecimal("0.4");
} else if (thirtyDayVolume.compareTo(new BigDecimal("125")) <= 0) {
return new BigDecimal("0.35");
} else if (thirtyDayVolume.compareTo(new BigDecimal("160")) <= 0) {
return new BigDecimal("0.3");
} else if (thirtyDayVolume.compareTo(new BigDecimal("200")) <= 0) {
return new BigDecimal("0.25");
} else if (thirtyDayVolume.compareTo(new BigDecimal("250")) <= 0) {
return new BigDecimal("0.2");
} else if (thirtyDayVolume.compareTo(new BigDecimal("320")) <= 0) {
return new BigDecimal("0.15");
} else {
return new BigDecimal("0.10");
}
}
public static BigDecimal getFeeInDecimals(BigDecimal thirtyDayVolume) {
return getFeeInPercentage(thirtyDayVolume).divide(new BigDecimal("100"), 4,
BigDecimal.ROUND_UNNECESSARY);
}
public static BigDecimal lowestThirtyDayVolume(BigDecimal fee) {
if (fee.compareTo(new BigDecimal("1.00")) == 0) {
return new BigDecimal("0");
} else if (fee.compareTo(new BigDecimal("0.95")) == 0) {
return new BigDecimal("1");
} else if (fee.compareTo(new BigDecimal("0.90")) == 0) {
return new BigDecimal("2.5");
} else if (fee.compareTo(new BigDecimal("0.85")) == 0) {
return new BigDecimal("4");
} else if (fee.compareTo(new BigDecimal("0.80")) == 0) {
return new BigDecimal("6.5");
} else if (fee.compareTo(new BigDecimal("0.75")) == 0) {
return new BigDecimal("9");
} else if (fee.compareTo(new BigDecimal("0.70")) == 0) {
return new BigDecimal("12");
} else if (fee.compareTo(new BigDecimal("0.65")) == 0) {
return new BigDecimal("18");
} else if (fee.compareTo(new BigDecimal("0.60")) == 0) {
return new BigDecimal("25");
} else if (fee.compareTo(new BigDecimal("0.55")) == 0) {
return new BigDecimal("32");
} else if (fee.compareTo(new BigDecimal("0.50")) == 0) {
return new BigDecimal("40");
} else if (fee.compareTo(new BigDecimal("0.45")) == 0) {
return new BigDecimal("55");
} else if (fee.compareTo(new BigDecimal("0.40")) == 0) {
return new BigDecimal("75");
} else if (fee.compareTo(new BigDecimal("0.35")) == 0) {
return new BigDecimal("100");
} else if (fee.compareTo(new BigDecimal("0.30")) == 0) {
return new BigDecimal("125");
} else if (fee.compareTo(new BigDecimal("0.25")) == 0) {
return new BigDecimal("160");
} else if (fee.compareTo(new BigDecimal("0.20")) == 0) {
return new BigDecimal("200");
} else if (fee.compareTo(new BigDecimal("0.15")) == 0) {
return new BigDecimal("250");
} else if (fee.compareTo(new BigDecimal("0.10")) == 0) {
return new BigDecimal("320");
} else if (fee.compareTo(BigDecimal.ZERO) == 0) {
return BigDecimal.ZERO;
}
throw new IllegalStateException("Could not find fee bracket");
}
}