【代码报错】ParserException Traceback (most recent call last)
由bq6l4p3t创建,最终由hxgre 被浏览 18 用户
---------------------------------------------------------------------------
全部代码如下:
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 ")"