Quant

2023-01-04

统计学

梯度(斜率)

import numpy as np

np_test1 = np.array([0,0,0,0,0,0])
print("梯度1",np_test1,np.gradient(np_test1))
np_test2 = np.array([0,1,2,3,4,5])
print("梯度2",np_test2,np.gradient(np_test2))
np_test3 = np.array([0,1,2,1,0,-1])
print("梯度3",np_test3,np.gradient(np_test3))
np_test4 = np.array([-1,-1,-1,-1,-1,-1])
print("梯度4",np_test4,np.gradient(np_test4))
np_test5 = np.array([0,-1,-3,-6,-10,-15,-18,-20,-21,-21,-20,-18])
print("梯度5",np_test5,np.gradient(np_test5))
np_test6 = np.array([0,-1,-3,-6,-10,-15,-18,-20,-21,-21,-20,-18,-20])
print("梯度6",np_test6,np.gradient(np_test6))
np_test7 = np.array([0,-1,-3,-6,-10,-15,-18,-20,-21,-21,-20,-18,-18])
print("梯度7",np_test7,np.gradient(np_test7))
np_test8 = np.array([0,-1,-3,-6,-10,-15,-18,-20,-21,-21,-20,-18,-16])
print("梯度8",np_test8,np.gradient(np_test8))

OUT:

梯度1 [0 0 0 0 0 0] [0. 0. 0. 0. 0. 0.]
梯度2 [0 1 2 3 4 5] [1. 1. 1. 1. 1. 1.]
梯度3 [ 0  1  2  1  0 -1] [ 1.  1.  0. -1. -1. -1.]
梯度4 [-1 -1 -1 -1 -1 -1] [0. 0. 0. 0. 0. 0.]
梯度5 [  0  -1  -3  -6 -10 -15 -18 -20 -21 -21 -20 -18] [-1.  -1.5 -2.5 -3.5 -4.5 -4.  -2.5 -1.5 -0.5  0.5  1.5  2. ]
梯度6 [  0  -1  -3  -6 -10 -15 -18 -20 -21 -21 -20 -18 -20] [-1.  -1.5 -2.5 -3.5 -4.5 -4.  -2.5 -1.5 -0.5  0.5  1.5  0.  -2. ]
梯度7 [  0  -1  -3  -6 -10 -15 -18 -20 -21 -21 -20 -18 -18] [-1.  -1.5 -2.5 -3.5 -4.5 -4.  -2.5 -1.5 -0.5  0.5  1.5  1.   0. ]
梯度8 [  0  -1  -3  -6 -10 -15 -18 -20 -21 -21 -20 -18 -16] [-1.  -1.5 -2.5 -3.5 -4.5 -4.  -2.5 -1.5 -0.5  0.5  1.5  2.   2. ]

标准差

import numpy as np

np_test1 = np.array([0,0,0,0,0])
print("标准差1",np_test1,np_test1.std())
np_test2 = np.array([0,1,0,0,0])
print("标准差2",np_test2,np_test2.std())
np_test3 = np.array([0,0,0,1,0])
print("标准差3",np_test3,np_test3.std())
np_test4 = np.array([0,0,1,0,0])
print("标准差4",np_test4,np_test4.std())
np_test5 = np.array([1,1,1,1,1])
print("标准差5",np_test5,np_test5.std())
np_test6 = np.array([1,1,0,0,0])
print("标准差6",np_test6,np_test6.std())
np_test7 = np.array([1,1,0,0,0,0])
print("标准差7",np_test7,np_test7.std())
np_test8 = np.array([1,1,1,0,0,0])
print("标准差8",np_test8,np_test8.std())
np_test9 = np.array([0.5,0.5,0.5,0,0,0])
print("标准差9",np_test9,np_test9.std())
np_test10 = np.array([0.25,0.25,0.25,0,0,0])
print("标准差10",np_test10,np_test10.std())
np_test11 = np.array([0.75,0.75,0.75,0,0,0])
print("标准差11",np_test11,np_test11.std())
np_test12 = np.array([0.75,0.75,0.75,1,1,1])
print("标准差12",np_test12,np_test12.std())

OUT:

标准差1 [0 0 0 0 0] 0.0
标准差2 [0 1 0 0 0] 0.4000000000000001
标准差3 [0 0 0 1 0] 0.4
标准差4 [0 0 1 0 0] 0.4000000000000001
标准差5 [1 1 1 1 1] 0.0
标准差6 [1 1 0 0 0] 0.48989794855663565
标准差7 [1 1 0 0 0 0] 0.47140452079103173
标准差8 [1 1 1 0 0 0] 0.5
标准差9 [0.5 0.5 0.5 0.  0.  0. ] 0.25
标准差10 [0.25 0.25 0.25 0.   0.   0.  ] 0.125
标准差11 [0.75 0.75 0.75 0.   0.   0.  ] 0.375
标准差12 [0.75 0.75 0.75 1.   1.   1.  ] 0.125

机器学习框架环境

BTGYM

https://github.com/Kismuz/btgym

tensortrade

https://github.com/tensortrade-org/tensortrade

Baseline backtest performance

test

Environment configuration [M4]

model name : AMD Ryzen 7 6800H with Radeon Graphics  [16 core]
MemTotal:       28610872 kB
MemFree:        26584252 kB
SwapTotal:       7340032 kB
SwapFree:        7340032 kB
system: Ubuntu 20.04.5 LTS
kernel: Linux 5.15.79.1-microsoft-standard-WSL2 x86_64
Python 3.8.10
backtrader             1.9.76.123
ccxt                   2.6.47
pandas                 1.5.2
pandas-ta              0.3.14b0
pymongo                4.3.3
[Init] 策略: 测试信号_test 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] 抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 14_200 [测试信号_test] 最终 1000000.00

real    1m20.179s
user    1m18.912s
sys     0m1.421s

Environment configuration [M4]

model name : AMD Ryzen 7 6800H with Radeon Graphics  [16 core]
MemTotal:       58455856 kB
MemFree:        50016704 kB
SwapTotal:       8388608 kB
SwapFree:        8388608 kB
system: NT
kernel: MINGW64_NT-10.0-22621 3.3.6-341.x86_64 unknown
Python 3.9.13
backtrader                    1.9.76.123
ccxt                          2.6.39
pandas                        1.4.4
pandas-ta                     0.3.14b0
pymongo                       4.3.3
[Init] 策略: 测试信号_test 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] 抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 14_200 [测试信号_test] 最终 1000000.00

real    1m43.855s
user    0m0.015s
sys     0m0.000s

Environment configuration [m3]

model name : Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz  [40 core]
MemTotal:       131970928 kB
MemFree:        124979156 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
system: Ubuntu 20.04.3 LTS
kernel: Linux 5.15.0-46-generic x86_64
Python 3.8.10
backtrader              1.9.76.123
ccxt                    2.5.46
pandas                  1.4.1
pandas-ta               0.3.14b0
pymongo                 4.3.3
[Init] 策略: 测试信号_test 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] [主数据库:mongodb://192.168.1.20]
抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 14_200 [测试信号_test] 最终 1000000.00

real    5m10.304s
user    5m1.097s
sys     0m5.967s

Environment configuration [E14]

model name : AMD Ryzen 5 4500U with Radeon Graphics  [6 core]
MemTotal:       12451164 kB
MemFree:        11482124 kB
SwapTotal:       4194304 kB
SwapFree:        4194304 kB
system: Ubuntu 20.04.1 LTS
kernel: Linux 5.4.72-microsoft-standard-WSL2 x86_64
Python 3.8.10
backtrader             1.9.76.123
ccxt                   2.4.27
pandas                 1.5.2
pandas-ta              0.3.14b0
pymongo                4.3.3
[Init] 策略: 测试信号_test 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] 抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 14_200 [测试信号_test] 最终 1000000.00

real    1m59.407s
user    1m57.261s
sys     0m1.480s

Environment configuration [M1]

model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz  [4 core]
MemTotal:       33452176 kB
MemFree:        18736776 kB
SwapTotal:      12582912 kB
SwapFree:       12463216 kB
system: NT
kernel: MINGW64_NT-10.0-19044 3.1.4-340.x86_64 unknown
Python 3.7.6
backtrader                         1.9.76.123
ccxt                               2.2.17
pandas                             1.3.5
pandas-ta                          0.3.14b0
pymongo                            4.3.3
[Init] 策略: 测试信号_test 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] 抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 14_200 [测试信号_test] 最终 1000000.00

real    4m22.050s
user    0m0.015s
sys     0m0.016s

Environment configuration [M1]

model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz  [4 core]
MemTotal:       26198024 kB
MemFree:        23249568 kB
SwapTotal:       7340032 kB
SwapFree:        7340032 kB
system: Ubuntu 20.04.1 LTS
kernel: Linux 4.19.128-microsoft-standard x86_64
Python 3.8.10
backtrader             1.9.76.123
ccxt                   2.5.30
pandas                 1.4.4
pandas-ta              0.3.14b0
pymongo                4.3.3
[Init] 策略: 测试信号_test 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] 抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 14_200 [测试信号_test] 最终 1000000.00

real    2m27.018s
user    2m23.037s
sys     0m1.120s

Environment configuration [BRIC]

model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz  [4 core]
MemTotal:       13008184 kB
MemFree:        12005880 kB
SwapTotal:       4194304 kB
SwapFree:        4194304 kB
system: Ubuntu 20.04.4 LTS
kernel: Linux 5.10.16.3-microsoft-standard-WSL2 x86_64
Python 3.8.10
backtrader             1.9.76.123
ccxt                   2.5.30
pandas                 1.4.4
pandas-ta              0.3.14b0
pymongo                4.3.3
[Init] 策略: 测试信号_test 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] [主数据库:mongodb://192.168.3.32]
抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 14_200 [测试信号_test] 最终 1000000.00
胜率结果:  {'all_num': 0, 'win_num': 0, 'los_num': 0, 'win_p': 0, 'los_p': 0}

real    3m40.160s
user    3m37.635s
sys     0m3.841s

Environment configuration [M2]

model name : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz  [16 core]
MemTotal:       13022068 kB
MemFree:        10488912 kB
SwapTotal:       4194304 kB
SwapFree:        4194304 kB
system: Ubuntu 20.04.3 LTS
kernel: Linux 5.10.16.3-microsoft-standard-WSL2 x86_64
Python 3.8.10
backtrader             1.9.76.123
ccxt                   2.6.47
pandas                 1.5.3
pandas-ta              0.3.14b0
pymongo                4.3.3
[Init] 策略: 测试信号_test 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] [主数据库:mongodb://192.168.1.20]
抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 14_200 [测试信号_test] 最终 1000000.00

real    4m17.342s
user    4m9.496s
sys     0m2.987s

m16_1

Environment configuration [M1]

model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz  [4 core]
MemTotal:       26198024 kB
MemFree:        21258576 kB
SwapTotal:       7340032 kB
SwapFree:        7340032 kB
kernel: Linux 4.19.128-microsoft-standard x86_64
Python 3.8.10
backtrader             1.9.76.123
ccxt                   1.93.108
pandas                 1.4.4
pandas-ta              0.3.14b0
pymongo                4.2.0
[Init] 策略: 微震荡_m16_1 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] 抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 10_600_9_65_9_29_5_3_66_6_20_25_16_4_30_1_1_27_27 [微震荡_m16_1] 最终 983616.87
胜率结果:  {'all_num': 1338, 'win_num': 677, 'los_num': 661, 'win_p': 0.51, 'los_p': 0.49}

real    123m18.071s
user    122m40.520s
sys     0m39.400s

Environment configuration [BRIC]

model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz  [4 core]
MemTotal:       13008184 kB
MemFree:        12119408 kB
SwapTotal:       4194304 kB
SwapFree:        4194304 kB
kernel: Linux 5.10.16.3-microsoft-standard-WSL2 x86_64
Python 3.8.10
backtrader             1.9.76.123
ccxt                   2.2.17
pandas                 1.4.4
pandas-ta              0.3.14b0
pymongo                4.2.0
[Init] 策略: 微震荡_m16_1 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
[Init] [主数据库:mongodb://192.168.3.32]
抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 10_600_9_65_9_29_5_3_66_6_20_25_16_4_30_1_1_27_27 [微震荡_m16_1] 最终 983616.87
胜率结果:  {'all_num': 1338, 'win_num': 677, 'los_num': 661, 'win_p': 0.51, 'los_p': 0.49}

real    109m52.703s
user    109m23.917s
sys     0m28.641s

Environment configuration [M2]

model name : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz  [16 core]
MemTotal:       13022068 kB
MemFree:        12341284 kB
SwapTotal:       4194304 kB
SwapFree:        4194304 kB
kernel: Linux 5.10.16.3-microsoft-standard-WSL2 x86_64
Python 3.8.10
backtrader             1.9.76.123
ccxt                   2.2.5
pandas                 1.4.2
pandas-ta              0.3.14b0
pymongo                4.3.3
[Init] 策略: 微震荡_m16_1 币种: BTC/USDT:USDT
[Init] 初始投资: --money 1000000.00
[Init] 自动切换到1%下注模式!
[Init] 下注方式: --sizer=1 --maxsizer=1 %
[Init] 设置佣金: --commission 0.001
抓取范围: --fromdate --todate
2020-01-01 00:00 open:7199.9    high:7199.9     low:7189.4      close:7198.2    volume:48238.0
2023-01-01 00:00 open:16591.6   high:16593.8    low:16591.6     close:16593.8   volume:2349.0
总数据量: 1578241 时间跨度: 1096.00天
-pd 10_600_9_65_9_29_5_3_66_6_20_25_16_4_30_1_1_27_27 [微震荡_m16_1] 最终 983616.87
胜率结果:  {'all_num': 1338, 'win_num': 677, 'los_num': 661, 'win_p': 0.51, 'los_p': 0.49}

real    233m6.286s
user    224m16.812s
sys     0m27.302s