Skip to main content

pqsdk

介绍

品宽量化交易平台提供的本地化SDK,支持使用熟悉的工具进行量化程序开发与回测

安装方法

# 首次安装, 在项目的根目录下添加requirements.txt文件,增加内容如下:

Cython==3.0.11

plotly-express==0.4.1

msgpack>=0.4.7

pandas==1.5.2

requests==2.31.0

six==1.16.0

thriftpy2==0.5.2

colorlog==4.8.0

QuantStats==0.0.62

ipython==8.12.2

numpy==1.24.4

tqdm==4.65.0

pqsdk



# 在命令行执行:

pip install -r requirements.txt

# 如果安装失败,请指定PIP官方镜像源

pip install -r requirements.txt -i https://pypi.org/simple



# 安装指定的版本: pip install pqsdk==<version>

pip install pqsdk==0.0.42



# 升级版本

pip install -U pqsdk

# 如果安装失败,请指定官方镜像源

pip install -U pqsdk -i https://pypi.org/simple

使用方法

from pqsdk.api import *



"""账号认证, 以品宽量化交易平台www.pinkquant.com的用户名/密码登录"""

username = 'vivian'

password = 'mypassword'

auth(username, password)



"""使用 token 认证账号"""

auth_by_token(token="")



# 获取因子数据

factor_list = ['float_share', 'pe', 'pe_ttm', 'ma_5', 'ema_5', 'dv_ratio']

df = get_factor(stock_pool=['000300.SH'], trade_date='2023-03-29', factor_list=factor_list)

print(df)
                            open        high  ...      volume       amount

sec_code  trade_date                          ...                         

000001.SZ 2023-03-29       12.73       12.74  ...   596064.33   750687.551

000002.SZ 2023-03-29       15.41       15.62  ...   654848.26  1012734.687

000063.SZ 2023-03-29   34.435106   34.553575  ...   782218.36  2685933.703

000069.SZ 2023-03-29         4.7        4.75  ...   324836.19   152639.669

000100.SZ 2023-03-29    3.989899    4.044431  ...  1604844.15   707678.236

...                          ...         ...  ...         ...          ...

688363.SH 2023-03-29  111.999999  113.159999  ...    30500.33   341085.693

688396.SH 2023-03-29   59.307833   61.559399  ...    75640.44   458018.471

688561.SH 2023-03-29   72.570005   72.570005  ...    87323.24   605371.703

688599.SH 2023-03-29   51.750011   52.490011  ...    149553.3   768914.461

688981.SH 2023-03-29   49.189988   50.319988  ...   708926.22  3496451.834



[300 rows x 6 columns]

                                    open   high  ...  volume      amount

sec_code  datetime                               ...                    

000001.SZ 2023-03-29 14:56:00  12.529999  12.54  ...  3274.0   4103280.0

          2023-03-29 14:57:00      12.54  12.54  ...  5943.0   7450969.0

          2023-03-29 14:58:00      12.54  12.54  ...   122.0    152976.0

          2023-03-29 14:59:00      12.54  12.54  ...     0.0         0.0

          2023-03-29 15:00:00      12.54  12.54  ...  9497.0  11900655.0



[5 rows x 6 columns]

从命令行进行回测

从Terminal命令行启动的格式:

pqsdk backtest -f <策略程序文件> -p <key=value> --plot --save_results --save_orders

系统预设了如下关于-p <key=value>的参数:

| 参数 | 默认值 | 说明 |

| --- | --- | --- |

| cash | 1000000 | 回测初始资金 |

| start_date | 2024-03-01 | 回测开始日期 |

| end_date | 2024-03-20 | 回测结束日期 |

| benchmark | 000300.SH | 回测基准 |

| stock_pool | 000300.SH,000905.SH | 股票池,即指数代码,多个指数代码用逗号分隔 |

| unit | 1d | 基准单位,支持1d,1m |

| adjust_period | 5 | 调仓周期 |

| hold_maxsize | 10 | 最大持仓股数 |

-plot参数为布尔值,是否要生成累计收益率的Tearsheet,不指定时为False。

案例:

pqsdk backtest -f tests/buy_and_hold.py -p cash=1000000 -p start_date=2024-03-01 -p end_date=2024-03-20 -p benchmark=000300.SH -p stock_pool=000300.SH,000905.SH -p unit=1d -p adjust_period=5 -p hold_maxsize=10  -plot

pqsdk backtest -f tests/buy_and_hold.py -p start_date=2024-03-01 -p end_date=2024-03-20 -p benchmark=000300.SH -p stock_pool=000300.SH,000905.SH

pqsdk backtest -f stop_loss_strategy.py -p cash=1000000 -p start_date=2024-03-01 -p end_date=2024-03-17 -p benchmark=000300.SH -p stock_pool=000300.SH,000905.SH -p unit=1d -p adjust_period=5 -p hold_maxsize=10  -plot

-save_metrics 是否保存结果到csv文件

-save_orders 是否保存委托到csv文件

从代码进行回测

代码案例:

from pqsdk.backtest import execute, tearsheet, save_metrics, save_orders, save_inout_cash

from pqsdk import log

from pqsdk.api import *





# 回测参数

params = {

    "cash": 1000000,

    "start_date": "2024-08-20",

    "end_date": "2024-09-03",

    "benchmark": "000300.SH",

    "stock_pool": "000300.SH".split(","),

    "unit": '1d',

    "adjust_period": 5,

    "hold_maxsize": 10,

}



#

strategy_file = "buy_and_hold.py"



# 执行回测

results = execute(parameters=params, strategy_file=strategy_file)



# print(results)

tearsheet(results)

save_metrics(results)

save_orders(results)

save_inout_cash(results)

回测结果

回测结果是一个字典,包含以下内容的案例:

results = {

    'benchmark': '000300.SH', 

    'analysis': {'time_return': {...}}, 

    'plot_data': {}, 

    'orders':    

    order_id   sec_code  volume     price  is_buy  avg_cost        comm            add_time  trade_date

0         1  000533.SZ   62800  4.769999    True  4.769999   25.579494 2024-01-03 15:00:00  2024-01-03

1         2  000533.SZ   62800  4.599999   False  4.769999  313.726004 2024-01-08 15:00:00  2024-01-08

2         3  000417.SZ   59600  4.973573    True  4.973573   25.364394 2024-01-10 15:00:00  2024-01-10

3         4  000417.SZ   59600  4.769180   False  4.973573  308.770614 2024-01-17 15:00:00  2024-01-17, 

'inout_cash':     

datetime     cash

0 2024-01-01  1000000}



其中: 

- results['analysis']['time_return']['strat_return'] 为策略每日收益率。

- results['analysis']['time_return']['bchmk_return'] Benchmark的收益率,与策略收益率strat_return进行对比.





'strat_return'为pd.Series,样例: 

2024-01-02    0.000000e+00

2024-01-03    0.000000e+00

2024-01-04    0.000000e+00

2024-01-05   -5.651995e-03

2024-01-08   -5.052566e-03

2024-01-09    0.000000e+00

2024-01-10    2.220446e-16

2024-01-11    4.104443e-03

2024-01-12   -5.839526e-03

2024-01-15    7.635953e-03

2024-01-16   -4.663432e-03

2024-01-17   -1.347019e-02

2024-01-18    0.000000e+00

2024-01-19    0.000000e+00

2024-01-22    0.000000e+00

2024-01-23    0.000000e+00

2024-01-24    0.000000e+00





'bchmk_return'为pd.Series,样例: 

2024-01-02   -0.013045

2024-01-03   -0.002379

2024-01-04   -0.009249

2024-01-05   -0.005360

2024-01-08   -0.012933

2024-01-09    0.001961

2024-01-10   -0.004668

2024-01-11    0.005658

2024-01-12   -0.003491

2024-01-15   -0.000989

2024-01-16    0.006083

2024-01-17   -0.021750

2024-01-18    0.014136

2024-01-19   -0.001512

2024-01-22   -0.015559

2024-01-23    0.004048

2024-01-24    0.013978

Metadata

Release files for pqsdk 0.1.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pqsdk 0.1.14
File Size Uploaded
pqsdk-0.1.14.tar.gz 63.7 kB Details

Release files / pqsdk-0.1.14.tar.gz

Download URL pqsdk-0.1.14.tar.gz
Size 63.7 kB
Tags Source
SHA-256 checksum
How to use checksums
81ee17ae456ac131be9e653984508e4576edc02260245d02f9086d5eab9de06c
BLAKE2b-256 checksum
How to use checksums
79d45151034fb87ef2d0ada7835eb7cee60728cbff7b36a873042d92f3157e75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.8.19

Release history Release notifications | RSS feed

This release

0.1.14 This release

1 release file

0.1.13

1 release file

0.1.12

1 release file

0.1.11

1 release file

0.1.10

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.0.99

1 release file

0.0.98

1 release file

0.0.97

1 release file

0.0.96

1 release file

0.0.95

1 release file

0.0.94

1 release file

0.0.93

1 release file

0.0.92

1 release file

0.0.91

1 release file

0.0.90

1 release file

0.0.89

1 release file

0.0.88

1 release file

0.0.87

1 release file

0.0.86

1 release file

0.0.85

1 release file

0.0.84

1 release file

0.0.83

1 release file

0.0.82

1 release file

0.0.81

1 release file

0.0.80

1 release file

0.0.79

1 release file

0.0.78

1 release file

0.0.77

1 release file

0.0.76

1 release file

0.0.75

1 release file

0.0.74

1 release file

0.0.73

1 release file

0.0.72

1 release file

0.0.71

1 release file

0.0.70

1 release file

0.0.69

1 release file

0.0.68

1 release file

0.0.67

1 release file

0.0.66

1 release file

0.0.65

1 release file

0.0.64

1 release file

0.0.63

1 release file

0.0.62

1 release file

0.0.61

1 release file

0.0.60

1 release file

0.0.59

1 release file

0.0.58

1 release file

0.0.57

1 release file

0.0.56

1 release file

0.0.55

1 release file

0.0.54

1 release file

0.0.53

1 release file

0.0.52

1 release file

0.0.51

1 release file

0.0.50

1 release file

0.0.49

1 release file

0.0.48

1 release file

0.0.47

1 release file

0.0.46

1 release file

0.0.45

1 release file

0.0.44

1 release file

0.0.43

1 release file

0.0.42

1 release file

0.0.41

1 release file

0.0.40

1 release file

0.0.39

1 release file

0.0.38

1 release file

0.0.37

1 release file

0.0.36

1 release file

0.0.35

1 release file

0.0.34

1 release file

0.0.33

1 release file

0.0.32

1 release file

0.0.31

1 release file

0.0.30

1 release file

0.0.29

1 release file

0.0.28

1 release file

0.0.27

1 release file

0.0.26

1 release file

0.0.25

1 release file

0.0.24

1 release file

0.0.23

1 release file

0.0.22

1 release file

0.0.21

1 release file

0.0.20

1 release file

0.0.19

1 release file

0.0.18

1 release file

0.0.17

1 release file

0.0.16

1 release file

0.0.15

1 release file

0.0.14

1 release file

0.0.13

1 release file

0.0.12

1 release file

0.0.11

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page