【代码报错】ParserException Traceback (most recent call last)
由bq6l4p3t创建,最终由bq6l4p3t 被浏览 1 用户
---------------------------------------------------------------------------
全部代码如下:
from bigmodule import M
<aistudiograph>
@param(id="m3", name="initialize")
def m3_initialize_bigquant_run(context): # 使用平台默认手续费设置 print("使用平台默认手续费设置")
@param(id="m3", name="handle_data")
def m3_handle_data_bigquant_run(context, data): import pandas as pd
if not context.rebalance_period.is_signal_date(data.current_dt.date()):
return
today_df = context.data[context.data["date"] == data.current_dt.strftime("%Y-%m-%d")]
target_instruments = set(today_df["instrument"])
holding_instruments = set([e for e, p in context.get_account_positions().items() if p.amount > 0])
for instrument in holding_instruments - target_instruments:
context.order_target_percent(instrument, 0)
for _, row in today_df.iterrows():
if row.instrument not in holding_instruments:
position = 0.0 if pd.isnull(row.position) else float(row.position)
context.order_target_percent(row.instrument, position)
@module(comment="基础选股,选取用户给定的股票池")
m5 = M.cn_stock_basic_selector.v8( indexes=[], exchanges=['上交所', '深交所'], drop_suspended=True, m_name="m5" )
@module(comment="输入因子表达式,定义评分逻辑")
m1 = M.input_features_dai.v30( input_1=m5.data, mode="表达式", expr=""" SELECT date, instrument, (RANK(net_profit_rate_ttm) + RANK(debt_to_asset_lf) + RANK(operating_revenue_yoy_ttm) + RANK(pb) + STDDEV(turn, 20) AS score FROM cn_stock_prefactors WHERE instrument IN ( '002594.XSHE', '600583.XSHG', '300014.XSHE', '600688.XSHG', '600795.XSHG', '601666.XSHG', '601012.XSHG', '600339.XSHG', '300035.XSHE', '600871.XSHG', '002202.XSHE', '000703.XSHE', '600875.XSHG', '601857.XSHG', '000930.XSHE', '000791.XSHE', '000777.XSHE', '002531.XSHE', '002534.XSHE', '300129.XSHE', '601001.XSHG', '000625.XSHE', '600537.XSHG', '601088.XSHG', '600348.XSHG', '601898.XSHG', '000937.XSHE', '600028.XSHG', '601808.XSHG', '000723.XSHE', '000683.XSHE', '600188.XSHG', '600546.XSHG', '601699.XSHG', '000983.XSHE' ) ORDER BY date, instrument """, expr_tables="cn_stock_prefactors", extra_fields="date,instrument", order_by="date, instrument", expr_drop_na=True, extract_data=False, m_name="m1" )
@module(comment="根据得分排序选取前15只股票")
m2 = M.score_to_position.v4( input_1=m1.data, score_field="score DESC", hold_count=15, position_expr="1 AS position", total_position=1, extract_data=False, m_name="m2" )
@module(comment="数据抽取模块")
m4 = M.extract_data_dai.v18( sql=m2.data, start_date="2021-01-01", start_date_bound_to_trading_date=True, end_date="2024-12-31", end_date_bound_to_trading_date=True, before_start_days=30, keep_before=False, debug=False, m_name="m4" )
@module(comment="交易,日线,设置初始化函数和K线处理函数,以及初始资金、基准等")
m3 = M.bigtrader.v35( data=m4.data, start_date="2021-01-01", end_date="2024-12-31", initialize=m3_initialize_bigquant_run, handle_data=m3_handle_data_bigquant_run, capital_base=1000000, frequency="daily", product_type="股票", rebalance_period_type="交易日", rebalance_period_days="20", rebalance_period_roll_forward=True, backtest_engine_mode="标准模式", before_start_days=0, volume_limit=1, order_price_field_buy="open", order_price_field_sell="open", benchmark="沪深300指数", plot_charts=True, debug=False, backtest_only=False, m_name="m3" )
</aistudiograph>
报错如下:
您可以去社区论坛问答交流板块反馈咨询
---------------------------------------------------------------------------
ParserException Traceback (most recent call last)
Cell In[3], line 38
30 m5 = M.cn_stock_basic_selector.v8(
31 indexes=\[\],
32 exchanges=\['上交所', '深交所'\],
33 drop_suspended=True,
34 m_name="m5"
35 )
37 # @module(comment="输入因子表达式,定义评分逻辑")
---> 38 m1 = M.input_features_dai.v30(
39 input_1=m5.data,
40 mode="表达式",
41 expr="""
42 SELECT
43 date,
44 instrument,
45 (RANK(net_profit_rate_ttm) +
46 RANK(debt_to_asset_lf) +
47 RANK(operating_revenue_yoy_ttm) +
48 RANK(pb) +
49 STDDEV(turn, 20) AS score
50 FROM cn_stock_prefactors
51 WHERE instrument IN (
52 '002594.XSHE', '600583.XSHG', '300014.XSHE', '600688.XSHG', '600795.XSHG',
53 '601666.XSHG', '601012.XSHG', '600339.XSHG', '300035.XSHE', '600871.XSHG',
54 '002202.XSHE', '000703.XSHE', '600875.XSHG', '601857.XSHG', '000930.XSHE',
55 '000791.XSHE', '000777.XSHE', '002531.XSHE', '002534.XSHE', '300129.XSHE',
56 '601001.XSHG', '000625.XSHE', '600537.XSHG', '601088.XSHG', '600348.XSHG',
57 '601898.XSHG', '000937.XSHE', '600028.XSHG', '601808.XSHG', '000723.XSHE',
58 '000683.XSHE', '600188.XSHG', '600546.XSHG', '601699.XSHG', '000983.XSHE'
59 )
60 ORDER BY date, instrument
61 """,
62 expr_tables="cn_stock_prefactors",
63 extra_fields="date,instrument",
64 order_by="date, instrument",
65 expr_drop_na=True,
66 extract_data=False,
67 m_name="m1"
68 )
70 # @module(comment="根据得分排序选取前15只股票")
71 m2 = M.score_to_position.v4(
72 input_1=m1.data,
73 score_field="score DESC",
(...)
78 m_name="m2"
79 )
File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/modules.py:28, in call(self, **kwargs)
File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:203, in module_invoke(name, version, kwargs)
File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:169, in _module_invoke(name, version, kwargs)
File /opt/pyenv/versions/3.11.8/lib/python3.11/site-packages/bigmodule/moduleinvoker.py:41, in _module_run(module, kwargs)
File dist/build/input_features_dai/v30/init.py:264, in v30.run()
File dist/build/input_features_dai/v30/init.py:146, in v30._ds_to_tables()
File dist/build/input_features_dai/v30/init.py:127, in v30._ds_to_table()
ParserException: Parser Error: syntax error at or near ")"