问答交流

【代码报错】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 ")"

标签

Python
{link}