{"description":"实验创建于2017/8/26","graph":{"edges":[{"to_node_id":"-41:sql","from_node_id":"-42:data"},{"to_node_id":"-52:data","from_node_id":"-41:data"}],"nodes":[{"node_id":"-42","module_id":"BigQuantSpace.input_features_dai.input_features_dai-v6","parameters":[{"name":"sql","value":"-- 使用DAI SQL获取数据,构建因子等,如下是一个例子作为参考\n-- DAI SQL 语法: https://bigquant.com/wiki/doc/dai-PLSbc1SbZX#h-sql%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B\n\nSELECT\n -- 【在这里输入因子表达式】\n -- DAI SQL 算子/函数: https://bigquant.com/wiki/doc/dai-PLSbc1SbZX#h-%E5%87%BD%E6%95%B0\n -- 数据&字段: 数据文档 https://bigquant.com/data/home\n -- 使用在时间截面的total_market_cap排名、五日日均成交量m_avg(amount_0, 5)作为本模版的两个因子\n -- 这里使用了DAI提供的normalize函数对因子进行z-score标准化处理以在多因子线性合成时不被量纲影响\n -- 还可以增加系数调节因子权重,这里对第二个因子简单地添加了0.9的系数,在这个示例中没有经济学意义\n -- 另外可以使用DAI提供的cut_outliers函数去极值,c_indneutralize、c_neutralize函数进行行业、行业市值中性化\n 0.4*normalize(total_market_cap) + 0.6*normalize(m_avg(amount_0, 5)) AS score,\n\n -- 日期,这是每个股票每天的数据\n date,\n -- 股票代码,代表每一支股票\n instrument\n-- 预计算因子和数据 cn_stock_factors https://bigquant.com/data/datasources/cn_stock_factors\nFROM cn_stock_factors\n\n-- where 数据过滤\nWHERE\n st_status = 0\n \n-- QUALIFY 数据过滤,支持过滤窗口函数,在 WHERE 之后才执行窗口函数。这里简化了一下,都放到QUALIFY了。对于专业用户建议分开WHERE和QUALIFY,有更好的升性能和准确性\nQUALIFY\n -- 剔除ST股票\n st_status = 0\n -- 上市天数 > 270, 过滤掉新股\n AND list_days > 270\n -- 要求 pe > 0,-- 表示注释\n -- AND pe_ttm > 0\n -- 非停牌股\n AND suspended = 0\n -- 不属于北交所\n AND list_sector < 4\n -- 去掉有空值的行\n AND COLUMNS(*) IS NOT NULL\n\n-- 按因子值排名,从小到大\nORDER BY date, score\n","type":"Literal","bound_global_parameter":null}],"input_ports":[],"output_ports":[{"name":"data","node_id":"-42"}],"cacheable":true,"seq_num":1,"comment":"通过SQL调用数据、因子和表达式等构建策略逻辑","comment_collapsed":false,"x":-230.81489825248718,"y":-6},{"node_id":"-41","module_id":"BigQuantSpace.extract_data_dai.extract_data_dai-v7","parameters":[{"name":"start_date","value":"2023-01-01","type":"Literal","bound_global_parameter":null},{"name":"start_date_bound_to_trading_date","value":"True","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"2023-10-31","type":"Literal","bound_global_parameter":null},{"name":"end_date_bound_to_trading_date","value":"True","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":"90","type":"Literal","bound_global_parameter":null},{"name":"debug","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"sql","node_id":"-41"}],"output_ports":[{"name":"data","node_id":"-41"}],"cacheable":true,"seq_num":2,"comment":"抽取数据,设置数据开始时间和结束时间,并绑定模拟交易","comment_collapsed":false,"x":-132,"y":132},{"node_id":"-52","module_id":"BigQuantSpace.bigtrader.bigtrader-v7","parameters":[{"name":"start_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"end_date","value":"","type":"Literal","bound_global_parameter":null},{"name":"initialize","value":"# 交易引擎:初始化函数,只执行一次\ndef bigquant_run(context):\n # 系统已经设置了默认的交易手续费和滑点,要修改手续费可使用如下函数\n context.set_commission(PerOrder(buy_cost=0.0003, sell_cost=0.0013, min_cost=5))\n\n # 持有期/调仓周期,1天,3天,5天等\n context.holding_days = 1\n # 设置买入股票数量\n context.target_hold_count = 10\n # 每只股票的目标权重\n context.target_percent_per_instrument = 1.0 / context.target_hold_count\n","type":"Literal","bound_global_parameter":null},{"name":"before_trading_start","value":"# 交易引擎:每个单位时间开盘前调用一次。\ndef bigquant_run(context, data):\n # 盘前处理,订阅行情等\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"handle_tick","value":"# 交易引擎:tick数据处理函数,每个tick执行一次\ndef bigquant_run(context, tick):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"handle_data","value":"def bigquant_run(context, data):\n \n # 止盈止损\n # stop_pos(context, data)\n\n # 每 context.holding_days 个交易日调仓一次\n if context.trading_day_index % context.holding_days != 0:\n return\n\n \n \n # 获取当前日期\n current_date = data.current_dt.strftime(\"%Y-%m-%d\")\n # 获取当日数据\n current_day_data = context.data[context.data[\"date\"] == current_date]\n # 取前10只\n current_day_data = current_day_data.head(context.target_hold_count)\n # 获取当日目标持有股票\n target_hold_instruments = set(current_day_data[\"instrument\"])\n # 获取当前已持有股票\n current_hold_instruments = set(context.get_account_positions().keys())\n\n # 卖出不在目标持有列表中的股票\n for instrument in current_hold_instruments - target_hold_instruments:\n context.order_target_percent(instrument, 0)\n \n # 买入目标持有列表中的股票\n for instrument in target_hold_instruments - current_hold_instruments:\n context.order_target_percent(instrument, context.target_percent_per_instrument)\n\n \n \n if context.trading_day_index == 5:\n #获取当前时间 pydatetime 类型\n time = data.current_dt \n #将时间格式转为年月日\n date = data.current_dt.date()\n print('date:', date)\n \n cash = context.portfolio.cash\n print('cash:', cash)\n \n pos = context.get_account_positions()\n print('positions:', pos)\n \n \n instrument = '000002.SZ'\n stock_market_price = data.current(instrument, 'price') \n print('最新价格:', stock_market_price)\n\n \n df = data.history(instrument, [\"close\", \"volume\"], 30, '1d')\n print('k 线数据:', df)\n\n \n \n","type":"Literal","bound_global_parameter":null},{"name":"handle_trade","value":"# 交易引擎:成交回报处理函数,每个成交发生时执行一次\ndef bigquant_run(context, trade):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"handle_order","value":"# 交易引擎:委托回报处理函数,每个委托变化时执行一次\ndef bigquant_run(context, order):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"after_trading","value":"# 交易引擎:盘后处理函数,每日盘后执行一次\ndef bigquant_run(context, data):\n pass\n","type":"Literal","bound_global_parameter":null},{"name":"capital_base","value":"100000","type":"Literal","bound_global_parameter":null},{"name":"frequency","value":"daily","type":"Literal","bound_global_parameter":null},{"name":"product_type","value":"股票","type":"Literal","bound_global_parameter":null},{"name":"before_start_days","value":"0","type":"Literal","bound_global_parameter":null},{"name":"volume_limit","value":1,"type":"Literal","bound_global_parameter":null},{"name":"order_price_field_buy","value":"open","type":"Literal","bound_global_parameter":null},{"name":"order_price_field_sell","value":"open","type":"Literal","bound_global_parameter":null},{"name":"benchmark","value":"000300.SH","type":"Literal","bound_global_parameter":null},{"name":"plot_charts","value":"True","type":"Literal","bound_global_parameter":null},{"name":"disable_cache","value":"True","type":"Literal","bound_global_parameter":null},{"name":"debug","value":"False","type":"Literal","bound_global_parameter":null},{"name":"backtest_only","value":"False","type":"Literal","bound_global_parameter":null}],"input_ports":[{"name":"data","node_id":"-52"},{"name":"options_data","node_id":"-52"},{"name":"history_ds","node_id":"-52"},{"name":"benchmark_ds","node_id":"-52"}],"output_ports":[{"name":"raw_perf","node_id":"-52"}],"cacheable":true,"seq_num":3,"comment":"交易,日线,设置初始化函数和K线处理函数,以及初始资金、基准等","comment_collapsed":false,"x":-54.444740295410156,"y":308.632080078125}],"node_layout":"<node_postions><node_position Node='-42' Position='-230.81489825248718,-6,200,200'/><node_position Node='-41' Position='-132,132,200,200'/><node_position Node='-52' Position='-54.444740295410156,308.632080078125,200,200'/></node_postions>"},"nodes_readonly":false,"studio_version":"v2"}
[2023-12-14 18:06:38.374987] INFO: moduleinvoker:3658027457.py:127: input_features_dai.v6 开始运行..
[2023-12-14 18:06:38.393990] INFO: moduleinvoker:3658027457.py:127: 命中缓存
[2023-12-14 18:06:38.398018] INFO: moduleinvoker:3658027457.py:127: input_features_dai.v6 运行完成[0.02305s].
[2023-12-14 18:06:38.420887] INFO: moduleinvoker:3658027457.py:173: extract_data_dai.v7 开始运行..
[2023-12-14 18:06:38.435373] INFO: moduleinvoker:3658027457.py:173: 命中缓存
[2023-12-14 18:06:38.439142] INFO: moduleinvoker:3658027457.py:173: extract_data_dai.v7 运行完成[0.018253s].
[2023-12-14 18:06:38.474906] INFO: moduleinvoker:3658027457.py:184: bigtrader.v7 开始运行..
2023-12-14 18:06:38 [info ] got metadata extra from input datasource
2023-12-14 18:06:38 [info ] read data ..
2023-12-14 18:06:38 [info ] start_date='2023-01-01', end_date='2023-10-31', instruments=2988
2023-12-14 18:06:38 [info ] bigtrader module V2.0.2
2023-12-14 18:06:38 [info ] bigtrader engine v1.10.6 2023-12-11
date: 2023-01-10
cash: 5543.129999999999
positions: {'300321.SZ': StockPosition(bkt000,300321.SZ,LONG,current_qty:600,avail_qty:600,cost_price:15.148,last_price:15.17,margin:0.0), '603159.SH': StockPosition(bkt000,603159.SH,LONG,current_qty:700,avail_qty:700,cost_price:13.207,last_price:13.26,margin:0.0), '300417.SZ': StockPosition(bkt000,300417.SZ,LONG,current_qty:1000,avail_qty:1000,cost_price:10.005,last_price:9.85,margin:0.0), '300549.SZ': StockPosition(bkt000,300549.SZ,LONG,current_qty:700,avail_qty:700,cost_price:12.737,last_price:12.85,margin:0.0), '603829.SH': StockPosition(bkt000,603829.SH,LONG,current_qty:900,avail_qty:900,cost_price:10.916,last_price:11.11,margin:0.0), '603685.SH': StockPosition(bkt000,603685.SH,LONG,current_qty:1000,avail_qty:1000,cost_price:9.555,last_price:9.65,margin:0.0), '603926.SH': StockPosition(bkt000,603926.SH,LONG,current_qty:1000,avail_qty:1000,cost_price:9.305,last_price:9.43,margin:0.0), '603037.SH': StockPosition(bkt000,603037.SH,LONG,current_qty:600,avail_qty:600,cost_price:16.208,last_price:16.54,margin:0.0), '300509.SZ': StockPosition(bkt000,300509.SZ,LONG,current_qty:1700,avail_qty:1700,cost_price:5.703,last_price:5.69,margin:0.0), '300669.SZ': StockPosition(bkt000,300669.SZ,LONG,current_qty:1200,avail_qty:1200,cost_price:8.324,last_price:8.27,margin:0.0)}
最新价格: 18.8
k 线数据: close volume
date
2022-12-30 18.20 51486383
2023-01-03 18.23 63639963
2023-01-04 19.07 108714690
2023-01-05 19.33 70524523
2023-01-06 19.22 72123976
2023-01-09 18.78 68506576
2023-01-10 18.80 48208009
2023-12-14 18:06:49 [info ] backtest done, raw_perf_ds:dai.DataSource("_527cac7fb5ac465198665babeb13e74a")
[2023-12-14 18:06:49.611694] INFO: bigcharts.impl.render:render.py:408:render_chart Data is None, skip loading it to chart.
[2023-12-14 18:06:50.688339] INFO: moduleinvoker:3658027457.py:184: bigtrader.v7 运行完成[12.213433s].
- 收益率42.67%
- 年化收益率54.06%
- 基准收益率-8.11%
- 阿尔法0.66
- 贝塔0.55
- 夏普比率2.44
- 胜率0.55
- 盈亏比1.92
- 收益波动率17.9%
- 信息比率0.2
- 最大回撤8.98%
日期 |
时间 |
证券代码 |
证券名称 |
买/卖 |
数量 |
成交价 |
成交金额 |
平仓盈亏 |
交易费用 |
Loading... (need help?) |
日期 |
证券代码 |
证券名称 |
数量 |
持仓均价 |
收盘价 |
持仓市值 |
收益 |
Loading... (need help?) |
时间 |
级别 |
内容 |
Loading... (need help?) |