diff --git a/docs/api/api.md b/docs/api/api.md index 6d21a29..851d137 100644 --- a/docs/api/api.md +++ b/docs/api/api.md @@ -618,4 +618,70 @@ df = pro.stock_st(trade_date='20250813') 171 603721.SH *ST天择 20250813 ST 风险警示板 172 600289.SH ST信通 20250813 ST 风险警示板 173 000929.SZ *ST兰黄 20250813 ST 风险警示板 -174 000638.SZ *ST万方 20250813 ST 风险警示板 \ No newline at end of file +174 000638.SZ *ST万方 20250813 ST 风险警示板 + + +每日涨跌停价格 +接口:stk_limit +描述:获取全市场(包含A/B股和基金)每日涨跌停价格,包括涨停价格,跌停价格等,每个交易日8点40左右更新当日股票涨跌停价格。 +限量:单次最多提取5800条记录,可循环调取,总量不限制 +积分:用户积2000积分可调取,单位分钟有流控,积分越高流量越大,请自行提高积分,具体请参阅积分获取办法 + + + +输入参数 + +名称 类型 必选 描述 +ts_code str N 股票代码 +trade_date str N 交易日期 +start_date str N 开始日期 +end_date str N 结束日期 + + +输出参数 + +名称 类型 默认显示 描述 +trade_date str Y 交易日期 +ts_code str Y TS股票代码 +pre_close float N 昨日收盘价 +up_limit float Y 涨停价 +down_limit float Y 跌停价 + + +接口示例 + + +pro = ts.pro_api() + +#获取单日全部股票数据涨跌停价格 +df = pro.stk_limit(trade_date='20190625') + +#获取单个股票数据 +df = pro.stk_limit(ts_code='002149.SZ', start_date='20190115', end_date='20190615') + + + +数据示例 + + trade_date ts_code up_limit down_limit +0 20190625 000001.SZ 15.06 12.32 +1 20190625 000002.SZ 30.94 25.32 +2 20190625 000004.SZ 25.15 20.57 +3 20190625 000005.SZ 3.49 2.85 +4 20190625 000006.SZ 6.14 5.02 +5 20190625 000007.SZ 7.74 6.34 +6 20190625 000008.SZ 4.28 3.50 +7 20190625 000009.SZ 6.36 5.20 +8 20190625 000010.SZ 3.51 3.17 +9 20190625 000011.SZ 10.58 8.66 +10 20190625 000012.SZ 5.16 4.22 +11 20190625 000014.SZ 10.98 8.98 +12 20190625 000016.SZ 4.81 3.93 +13 20190625 000017.SZ 5.15 4.21 +14 20190625 000018.SZ 1.44 1.30 +15 20190625 000019.SZ 8.09 6.62 +16 20190625 000020.SZ 12.21 9.99 +17 20190625 000021.SZ 9.30 7.61 +18 20190625 000023.SZ 14.61 11.95 +19 20190625 000025.SZ 23.08 18.88 +20 20190625 000026.SZ 8.66 7.08 \ No newline at end of file diff --git a/docs/api/financial_api.md b/docs/api/financial_api.md index 6025ba9..d5bbb12 100644 --- a/docs/api/financial_api.md +++ b/docs/api/financial_api.md @@ -508,4 +508,213 @@ df2 = pro.cashflow_vip(period='20181231',fields='') 9 | 母公司调整表 | 该公司母公司的本年度公布上年同期的财务报表数据 10 | 母公司调整前报表 | 母公司调整之前的原始财务报表数据 11 | 目公司调整前合并报表 | 母公司调整之前合并报表原数据 -12 | 母公司调整前报表 | 母公司报表发生变更前保留的原数据 \ No newline at end of file +12 | 母公司调整前报表 | 母公司报表发生变更前保留的原数据 + + +财务指标数据 +接口:fina_indicator,可以通过数据工具调试和查看数据。 +描述:获取上市公司财务指标数据,为避免服务器压力,现阶段每次请求最多返回100条记录,可通过设置日期多次请求获取更多数据。 +权限:用户需要至少2000积分才可以调取,具体请参阅积分获取办法 + +提示:当前接口只能按单只股票获取其历史数据,如果需要获取某一季度全部上市公司数据,请使用fina_indicator_vip接口(参数一致),需积攒5000积分。 + +输入参数 + +名称 类型 必选 描述 +ts_code str Y TS股票代码,e.g. 600001.SH/000001.SZ +ann_date str N 公告日期 +start_date str N 报告期开始日期 +end_date str N 报告期结束日期 +period str N 报告期(每个季度最后一天的日期,比如20171231表示年报) +输出参数 + +名称 类型 默认显示 描述 +ts_code str Y TS代码 +ann_date str Y 公告日期 +end_date str Y 报告期 +eps float Y 基本每股收益 +dt_eps float Y 稀释每股收益 +total_revenue_ps float Y 每股营业总收入 +revenue_ps float Y 每股营业收入 +capital_rese_ps float Y 每股资本公积 +surplus_rese_ps float Y 每股盈余公积 +undist_profit_ps float Y 每股未分配利润 +extra_item float Y 非经常性损益 +profit_dedt float Y 扣除非经常性损益后的净利润(扣非净利润) +gross_margin float Y 毛利 +current_ratio float Y 流动比率 +quick_ratio float Y 速动比率 +cash_ratio float Y 保守速动比率 +invturn_days float N 存货周转天数 +arturn_days float N 应收账款周转天数 +inv_turn float N 存货周转率 +ar_turn float Y 应收账款周转率 +ca_turn float Y 流动资产周转率 +fa_turn float Y 固定资产周转率 +assets_turn float Y 总资产周转率 +op_income float Y 经营活动净收益 +valuechange_income float N 价值变动净收益 +interst_income float N 利息费用 +daa float N 折旧与摊销 +ebit float Y 息税前利润 +ebitda float Y 息税折旧摊销前利润 +fcff float Y 企业自由现金流量 +fcfe float Y 股权自由现金流量 +current_exint float Y 无息流动负债 +noncurrent_exint float Y 无息非流动负债 +interestdebt float Y 带息债务 +netdebt float Y 净债务 +tangible_asset float Y 有形资产 +working_capital float Y 营运资金 +networking_capital float Y 营运流动资本 +invest_capital float Y 全部投入资本 +retained_earnings float Y 留存收益 +diluted2_eps float Y 期末摊薄每股收益 +bps float Y 每股净资产 +ocfps float Y 每股经营活动产生的现金流量净额 +retainedps float Y 每股留存收益 +cfps float Y 每股现金流量净额 +ebit_ps float Y 每股息税前利润 +fcff_ps float Y 每股企业自由现金流量 +fcfe_ps float Y 每股股东自由现金流量 +netprofit_margin float Y 销售净利率 +grossprofit_margin float Y 销售毛利率 +cogs_of_sales float Y 销售成本率 +expense_of_sales float Y 销售期间费用率 +profit_to_gr float Y 净利润/营业总收入 +saleexp_to_gr float Y 销售费用/营业总收入 +adminexp_of_gr float Y 管理费用/营业总收入 +finaexp_of_gr float Y 财务费用/营业总收入 +impai_ttm float Y 资产减值损失/营业总收入 +gc_of_gr float Y 营业总成本/营业总收入 +op_of_gr float Y 营业利润/营业总收入 +ebit_of_gr float Y 息税前利润/营业总收入 +roe float Y 净资产收益率 +roe_waa float Y 加权平均净资产收益率 +roe_dt float Y 净资产收益率(扣除非经常损益) +roa float Y 总资产报酬率 +npta float Y 总资产净利润 +roic float Y 投入资本回报率 +roe_yearly float Y 年化净资产收益率 +roa2_yearly float Y 年化总资产报酬率 +roe_avg float N 平均净资产收益率(增发条件) +opincome_of_ebt float N 经营活动净收益/利润总额 +investincome_of_ebt float N 价值变动净收益/利润总额 +n_op_profit_of_ebt float N 营业外收支净额/利润总额 +tax_to_ebt float N 所得税/利润总额 +dtprofit_to_profit float N 扣除非经常损益后的净利润/净利润 +salescash_to_or float N 销售商品提供劳务收到的现金/营业收入 +ocf_to_or float N 经营活动产生的现金流量净额/营业收入 +ocf_to_opincome float N 经营活动产生的现金流量净额/经营活动净收益 +capitalized_to_da float N 资本支出/折旧和摊销 +debt_to_assets float Y 资产负债率 +assets_to_eqt float Y 权益乘数 +dp_assets_to_eqt float Y 权益乘数(杜邦分析) +ca_to_assets float Y 流动资产/总资产 +nca_to_assets float Y 非流动资产/总资产 +tbassets_to_totalassets float Y 有形资产/总资产 +int_to_talcap float Y 带息债务/全部投入资本 +eqt_to_talcapital float Y 归属于母公司的股东权益/全部投入资本 +currentdebt_to_debt float Y 流动负债/负债合计 +longdeb_to_debt float Y 非流动负债/负债合计 +ocf_to_shortdebt float Y 经营活动产生的现金流量净额/流动负债 +debt_to_eqt float Y 产权比率 +eqt_to_debt float Y 归属于母公司的股东权益/负债合计 +eqt_to_interestdebt float Y 归属于母公司的股东权益/带息债务 +tangibleasset_to_debt float Y 有形资产/负债合计 +tangasset_to_intdebt float Y 有形资产/带息债务 +tangibleasset_to_netdebt float Y 有形资产/净债务 +ocf_to_debt float Y 经营活动产生的现金流量净额/负债合计 +ocf_to_interestdebt float N 经营活动产生的现金流量净额/带息债务 +ocf_to_netdebt float N 经营活动产生的现金流量净额/净债务 +ebit_to_interest float N 已获利息倍数(EBIT/利息费用) +longdebt_to_workingcapital float N 长期债务与营运资金比率 +ebitda_to_debt float N 息税折旧摊销前利润/负债合计 +turn_days float Y 营业周期 +roa_yearly float Y 年化总资产净利率 +roa_dp float Y 总资产净利率(杜邦分析) +fixed_assets float Y 固定资产合计 +profit_prefin_exp float N 扣除财务费用前营业利润 +non_op_profit float N 非营业利润 +op_to_ebt float N 营业利润/利润总额 +nop_to_ebt float N 非营业利润/利润总额 +ocf_to_profit float N 经营活动产生的现金流量净额/营业利润 +cash_to_liqdebt float N 货币资金/流动负债 +cash_to_liqdebt_withinterest float N 货币资金/带息流动负债 +op_to_liqdebt float N 营业利润/流动负债 +op_to_debt float N 营业利润/负债合计 +roic_yearly float N 年化投入资本回报率 +total_fa_trun float N 固定资产合计周转率 +profit_to_op float Y 利润总额/营业收入 +q_opincome float N 经营活动单季度净收益 +q_investincome float N 价值变动单季度净收益 +q_dtprofit float N 扣除非经常损益后的单季度净利润 +q_eps float N 每股收益(单季度) +q_netprofit_margin float N 销售净利率(单季度) +q_gsprofit_margin float N 销售毛利率(单季度) +q_exp_to_sales float N 销售期间费用率(单季度) +q_profit_to_gr float N 净利润/营业总收入(单季度) +q_saleexp_to_gr float Y 销售费用/营业总收入 (单季度) +q_adminexp_to_gr float N 管理费用/营业总收入 (单季度) +q_finaexp_to_gr float N 财务费用/营业总收入 (单季度) +q_impair_to_gr_ttm float N 资产减值损失/营业总收入(单季度) +q_gc_to_gr float Y 营业总成本/营业总收入 (单季度) +q_op_to_gr float N 营业利润/营业总收入(单季度) +q_roe float Y 净资产收益率(单季度) +q_dt_roe float Y 净资产单季度收益率(扣除非经常损益) +q_npta float Y 总资产净利润(单季度) +q_opincome_to_ebt float N 经营活动净收益/利润总额(单季度) +q_investincome_to_ebt float N 价值变动净收益/利润总额(单季度) +q_dtprofit_to_profit float N 扣除非经常损益后的净利润/净利润(单季度) +q_salescash_to_or float N 销售商品提供劳务收到的现金/营业收入(单季度) +q_ocf_to_sales float Y 经营活动产生的现金流量净额/营业收入(单季度) +q_ocf_to_or float N 经营活动产生的现金流量净额/经营活动净收益(单季度) +basic_eps_yoy float Y 基本每股收益同比增长率(%) +dt_eps_yoy float Y 稀释每股收益同比增长率(%) +cfps_yoy float Y 每股经营活动产生的现金流量净额同比增长率(%) +op_yoy float Y 营业利润同比增长率(%) +ebt_yoy float Y 利润总额同比增长率(%) +netprofit_yoy float Y 归属母公司股东的净利润同比增长率(%) +dt_netprofit_yoy float Y 归属母公司股东的净利润-扣除非经常损益同比增长率(%) +ocf_yoy float Y 经营活动产生的现金流量净额同比增长率(%) +roe_yoy float Y 净资产收益率(摊薄)同比增长率(%) +bps_yoy float Y 每股净资产相对年初增长率(%) +assets_yoy float Y 资产总计相对年初增长率(%) +eqt_yoy float Y 归属母公司的股东权益相对年初增长率(%) +tr_yoy float Y 营业总收入同比增长率(%) +or_yoy float Y 营业收入同比增长率(%) +q_gr_yoy float N 营业总收入同比增长率(%)(单季度) +q_gr_qoq float N 营业总收入环比增长率(%)(单季度) +q_sales_yoy float Y 营业收入同比增长率(%)(单季度) +q_sales_qoq float N 营业收入环比增长率(%)(单季度) +q_op_yoy float N 营业利润同比增长率(%)(单季度) +q_op_qoq float Y 营业利润环比增长率(%)(单季度) +q_profit_yoy float N 净利润同比增长率(%)(单季度) +q_profit_qoq float N 净利润环比增长率(%)(单季度) +q_netprofit_yoy float N 归属母公司股东的净利润同比增长率(%)(单季度) +q_netprofit_qoq float N 归属母公司股东的净利润环比增长率(%)(单季度) +equity_yoy float Y 净资产同比增长率 +rd_exp float N 研发费用 +update_flag str N 更新标识 +接口用法 + + +pro = ts.pro_api() + +df = pro.fina_indicator(ts_code='600000.SH') +或者 + + +df = pro.query('fina_indicator', ts_code='600000.SH', start_date='20170101', end_date='20180801') +数据样例 + +ts_code ann_date end_date eps dt_eps total_revenue_ps revenue_ps \ +0 600000.SH 20180830 20180630 0.95 0.95 2.8024 2.8024 +1 600000.SH 20180428 20180331 0.46 0.46 1.3501 1.3501 +2 600000.SH 20180428 20171231 1.84 1.84 5.7447 5.7447 +3 600000.SH 20180428 20171231 1.84 1.84 5.7447 5.7447 +4 600000.SH 20171028 20170930 1.45 1.45 4.2507 4.2507 +5 600000.SH 20171028 20170930 1.45 1.45 4.2507 4.2507 +6 600000.SH 20170830 20170630 0.97 0.97 2.9659 2.9659 +7 600000.SH 20170427 20170331 0.63 0.63 1.9595 1.9595 +8 600000.SH 20170427 20170331 0.63 0.63 1.9595 1.9595 \ No newline at end of file diff --git a/src/data/api_wrappers/__init__.py b/src/data/api_wrappers/__init__.py index 5d75731..6e815c5 100644 --- a/src/data/api_wrappers/__init__.py +++ b/src/data/api_wrappers/__init__.py @@ -12,11 +12,13 @@ Available APIs: - api_namechange: Stock name change history (股票曾用名) - api_bak_basic: Stock historical list (股票历史列表) - api_stock_st: ST stock list (ST股票列表) + - api_stk_limit: Stock limit price (每日涨跌停价格) Example: >>> from src.data.api_wrappers import get_daily, get_stock_basic, get_trade_cal, get_bak_basic >>> from src.data.api_wrappers import get_pro_bar, sync_pro_bar, get_daily_basic, sync_daily_basic >>> from src.data.api_wrappers import get_stock_st, sync_stock_st + >>> from src.data.api_wrappers import get_stk_limit, sync_stk_limit >>> data = get_daily('000001.SZ', start_date='20240101', end_date='20240131') >>> pro_data = get_pro_bar('000001.SZ', start_date='20240101', end_date='20240131') >>> daily_basic = get_daily_basic(trade_date='20240101') @@ -24,6 +26,7 @@ Example: >>> calendar = get_trade_cal('20240101', '20240131') >>> bak_basic = get_bak_basic(trade_date='20240101') >>> stock_st = get_stock_st(trade_date='20240101') + >>> stk_limit = get_stk_limit(trade_date='20240101') """ from src.data.api_wrappers.api_daily import ( @@ -58,6 +61,12 @@ from src.data.api_wrappers.api_stock_st import ( sync_stock_st, StockSTSync, ) +from src.data.api_wrappers.api_stk_limit import ( + get_stk_limit, + sync_stk_limit, + preview_stk_limit_sync, + StkLimitSync, +) from src.data.api_wrappers.api_trade_cal import ( get_trade_cal, get_trading_days, @@ -107,6 +116,11 @@ __all__ = [ "get_stock_st", "sync_stock_st", "StockSTSync", + # Stock limit price + "get_stk_limit", + "sync_stk_limit", + "preview_stk_limit_sync", + "StkLimitSync", ] # ============================================================================= @@ -179,6 +193,17 @@ try: order=40, ) + # 7. Stock Limit Price - 每日涨跌停价格 + from src.data.api_wrappers.api_stk_limit import StkLimitSync + + sync_registry.register_class( + name="stk_limit", + sync_class=StkLimitSync, + display_name="每日涨跌停价格", + description="股票每日涨跌停价格(涨停价、跌停价)", + order=50, + ) + except ImportError: # sync_registry 可能不存在(首次导入),忽略 pass diff --git a/src/data/api_wrappers/api_stk_limit.py b/src/data/api_wrappers/api_stk_limit.py new file mode 100644 index 0000000..ecdb541 --- /dev/null +++ b/src/data/api_wrappers/api_stk_limit.py @@ -0,0 +1,224 @@ +"""Stock Limit Price (涨跌停价格) interface. + +Fetch daily limit up/down prices for all stocks from Tushare. +This interface retrieves the upper and lower limit prices for stocks, +which are typically available around 8:40 AM each trading day. +""" + +from typing import override + +import pandas as pd + +from src.data.client import TushareClient +from src.data.api_wrappers.base_sync import DateBasedSync + + +def get_stk_limit( + trade_date: str | None = None, + start_date: str | None = None, + end_date: str | None = None, + ts_code: str | None = None, + client: TushareClient | None = None, +) -> pd.DataFrame: + """Fetch stock limit prices from Tushare. + + This interface retrieves daily limit up/down prices for stocks. + Each trading day, limit prices are available around 8:40 AM. + Supports fetching all stocks for a single date (preferred for efficiency) + or date range data for specific stocks. + + Args: + trade_date: Specific trade date (YYYYMMDD format). + If provided, fetches all stocks for this date (most efficient). + start_date: Start date (YYYYMMDD format). + Used with end_date for date range queries. + end_date: End date (YYYYMMDD format). + Used with start_date for date range queries. + ts_code: Stock code filter (optional). + e.g., '000001.SZ', '600000.SH' + client: Optional TushareClient instance for shared rate limiting. + If None, creates a new client. For concurrent sync operations, + pass a shared client to ensure proper rate limiting. + + Returns: + pd.DataFrame with columns: + - trade_date: Trade date (YYYYMMDD) + - ts_code: Stock code + - pre_close: Previous closing price + - up_limit: Upper limit price (涨停价) + - down_limit: Lower limit price (跌停价) + + Example: + >>> # Get all stocks limit prices for a single date (most efficient) + >>> data = get_stk_limit(trade_date='20240625') + >>> + >>> # Get date range data + >>> data = get_stk_limit(start_date='20240101', end_date='20240131') + >>> + >>> # Get specific stock data + >>> data = get_stk_limit(ts_code='000001.SZ', start_date='20240101', end_date='20240131') + """ + client = client or TushareClient() + + # Build parameters + params = {} + if trade_date: + params["trade_date"] = trade_date + if start_date: + params["start_date"] = start_date + if end_date: + params["end_date"] = end_date + if ts_code: + params["ts_code"] = ts_code + + # Fetch data + data = client.query("stk_limit", **params) # type: ignore + + # Rename date column if needed + if "date" in data.columns: + data = data.rename(columns={"date": "trade_date"}) + + return data + + +class StkLimitSync(DateBasedSync): + """Stock Limit Price data batch sync manager. + + Inherits from DateBasedSync, fetches data by date for all stocks. + Each API call retrieves limit prices for all stocks on a specific date. + + Example: + >>> sync = StkLimitSync() + >>> results = sync.sync_all() # Incremental sync + >>> results = sync.sync_all(force_full=True) # Full reload + >>> preview = sync.preview_sync() # Preview + """ + + table_name: str = "stk_limit" + default_start_date: str = "20180101" + + # Table schema definition + TABLE_SCHEMA: dict[str, str] = { + "ts_code": "VARCHAR(16) NOT NULL", + "trade_date": "DATE NOT NULL", + "pre_close": "DOUBLE", + "up_limit": "DOUBLE", + "down_limit": "DOUBLE", + } + + # Index definitions + TABLE_INDEXES: list[tuple[str, list[str]]] = [ + ("idx_stk_limit_date_code", ["trade_date", "ts_code"]), + ] + + # Primary key definition + PRIMARY_KEY: tuple[str, str] = ("ts_code", "trade_date") + + @override + def fetch_single_date(self, trade_date: str) -> pd.DataFrame: + """Fetch limit prices for all stocks on a specific date. + + Args: + trade_date: Trading date (YYYYMMDD) + + Returns: + DataFrame with limit prices for all stocks on the date + """ + # Use get_stk_limit to fetch all stocks for a single date + data = get_stk_limit( + trade_date=trade_date, + client=self.client, # Pass shared client for rate limiting + ) + return data + + +def sync_stk_limit( + force_full: bool = False, + start_date: str | None = None, + end_date: str | None = None, + dry_run: bool = False, +) -> pd.DataFrame: + """Sync stock limit prices to local DuckDB storage. + + This is the main entry point for stock limit price data synchronization. + + Args: + force_full: If True, force full reload from default_start_date + start_date: Manual start date override (YYYYMMDD) + end_date: Manual end date override (defaults to today) + dry_run: If True, only preview what would be synced without writing + + Returns: + DataFrame with synced data + + Example: + >>> # First sync (full load from default_start_date) + >>> result = sync_stk_limit() + >>> + >>> # Subsequent syncs (incremental - only new data) + >>> result = sync_stk_limit() + >>> + >>> # Force full reload + >>> result = sync_stk_limit(force_full=True) + >>> + >>> # Manual date range + >>> result = sync_stk_limit(start_date='20240101', end_date='20240131') + >>> + >>> # Dry run (preview only) + >>> result = sync_stk_limit(dry_run=True) + """ + sync_manager = StkLimitSync() + return sync_manager.sync_all( + force_full=force_full, + start_date=start_date, + end_date=end_date, + dry_run=dry_run, + ) + + +def preview_stk_limit_sync( + force_full: bool = False, + start_date: str | None = None, + end_date: str | None = None, + sample_size: int = 3, +) -> dict[str, object]: + """Preview stock limit price sync data volume and samples. + + This is the recommended way to check what would be synced before + actually performing the synchronization. + + Args: + force_full: If True, preview full sync from default_start_date + start_date: Manual start date override + end_date: Manual end date override (defaults to today) + sample_size: Number of sample days to fetch for preview (default: 3) + + Returns: + Dictionary with preview information: + { + 'sync_needed': bool, + 'date_count': int, + 'start_date': str, + 'end_date': str, + 'estimated_records': int, + 'sample_data': pd.DataFrame, + 'mode': str, # 'full', 'incremental', or 'none' + } + + Example: + >>> # Preview what would be synced + >>> preview = preview_stk_limit_sync() + >>> + >>> # Preview full sync + >>> preview = preview_stk_limit_sync(force_full=True) + >>> + >>> # Preview with more samples + >>> preview = preview_stk_limit_sync(sample_size=5) + """ + sync_manager = StkLimitSync() + return sync_manager.preview_sync( + force_full=force_full, + start_date=start_date, + end_date=end_date, + sample_size=sample_size, + ) diff --git a/src/data/api_wrappers/base_sync.py b/src/data/api_wrappers/base_sync.py index 4568f03..b67c006 100644 --- a/src/data/api_wrappers/base_sync.py +++ b/src/data/api_wrappers/base_sync.py @@ -1324,52 +1324,6 @@ class DateBasedSync(BaseDataSync): probe_desc = f"date={probe_date}, all stocks" self._probe_table_and_cleanup(probe_data, probe_desc) - # 执行同步 - combined = self._run_date_range_sync(sync_start, sync_end, dry_run) - if self._should_probe_table(): - print(f"[{class_name}] Table '{self.table_name}' is empty, probing...") - # 使用最近一个交易日的完整数据进行探测 - probe_date = get_last_trading_day(sync_start, sync_end) - if probe_date: - probe_data = self.fetch_single_date(probe_date) - probe_desc = f"date={probe_date}, all stocks" - self._probe_table_and_cleanup(probe_data, probe_desc) - - # 执行同步 - if self._should_probe_table(): - print(f"[{class_name}] Table '{self.table_name}' is empty, probing...") - # 使用最近一个交易日的完整数据进行探测 - probe_date = get_last_trading_day(sync_start, sync_end) - if probe_date: - probe_data = self.fetch_single_date(probe_date) - probe_desc = f"date={probe_date}, all stocks" - self._probe_table_and_cleanup(probe_data, probe_desc) - if self._should_probe_table(): - print(f"[{class_name}] Table '{self.table_name}' is empty, probing...") - # 使用最近一个交易日的完整数据进行探测 - probe_date = get_last_trading_day(sync_start, sync_end) - if probe_date: - probe_data = self.fetch_single_date(probe_date) - probe_desc = f"date={probe_date}, all stocks" - self._probe_table_and_cleanup(probe_data, probe_desc) - - # 执行同步 - storage = Storage() - if not storage.exists(self.table_name): - print( - f"[{class_name}] Table '{self.table_name}' doesn't exist, creating..." - ) - # 获取样本数据以推断 schema - sample = self.fetch_single_date(sync_end) - if sample.empty: - # 尝试另一个日期 - sample = self.fetch_single_date("20240102") - if not sample.empty: - self._ensure_table_schema(sample) - else: - print(f"[{class_name}] Cannot create table: no sample data available") - return pd.DataFrame() - # 执行同步 combined = self._run_date_range_sync(sync_start, sync_end, dry_run) diff --git a/src/data/api_wrappers/financial_data/api_fina_indicator.py b/src/data/api_wrappers/financial_data/api_fina_indicator.py new file mode 100644 index 0000000..deeb2d5 --- /dev/null +++ b/src/data/api_wrappers/financial_data/api_fina_indicator.py @@ -0,0 +1,394 @@ +"""财务指标数据接口 (VIP 版本) + +使用 Tushare VIP 接口 (fina_indicator_vip) 获取财务指标数据。 +按季度同步,一次请求获取一个季度的全部上市公司数据。 + +接口说明: +- fina_indicator_vip: 获取某一季度全部上市公司财务指标数据 +- 需要 5000 积分才能调用 +- period 参数为报告期(季度最后一天,如 20231231) +- 每次请求最多返回 100 条记录(需多次请求获取更多数据) + +使用方式: + # 同步财务指标数据 + from src.data.api_wrappers.financial_data.api_fina_indicator import ( + FinaIndicatorQuarterSync, + sync_fina_indicator + ) + + # 方式1: 使用类 + syncer = FinaIndicatorQuarterSync() + syncer.sync_incremental() # 增量同步 + syncer.sync_full() # 全量同步 + + # 方式2: 使用便捷函数 + sync_fina_indicator() # 增量同步 + sync_fina_indicator(force_full=True) # 全量同步 +""" + +from typing import Optional +import pandas as pd + +from src.data.client import TushareClient +from src.data.api_wrappers.base_financial_sync import ( + QuarterBasedSync, + sync_financial_data, + preview_financial_sync, +) + + +class FinaIndicatorQuarterSync(QuarterBasedSync): + """财务指标季度同步实现。 + + 使用 fina_indicator_vip 接口按季度获取全部上市公司财务指标数据。 + + 表结构: financial_fina_indicator + 主键: (ts_code, end_date) + """ + + table_name = "financial_fina_indicator" + api_name = "fina_indicator_vip" + + # 目标报表类型:默认只同步合并报表(财务指标接口无需过滤 report_type) + TARGET_REPORT_TYPE = None + + # 表结构定义 - 完整的财务指标字段 + TABLE_SCHEMA = { + # 基础字段 + "ts_code": "VARCHAR(16) NOT NULL", + "ann_date": "DATE", + "end_date": "DATE NOT NULL", + # 每股收益指标 + "eps": "DOUBLE", + "dt_eps": "DOUBLE", + "total_revenue_ps": "DOUBLE", + "revenue_ps": "DOUBLE", + "capital_rese_ps": "DOUBLE", + "surplus_rese_ps": "DOUBLE", + "undist_profit_ps": "DOUBLE", + "extra_item": "DOUBLE", + "profit_dedt": "DOUBLE", + "gross_margin": "DOUBLE", + # 偿债能力指标 + "current_ratio": "DOUBLE", + "quick_ratio": "DOUBLE", + "cash_ratio": "DOUBLE", + # 营运能力指标 + "invturn_days": "DOUBLE", + "arturn_days": "DOUBLE", + "inv_turn": "DOUBLE", + "ar_turn": "DOUBLE", + "ca_turn": "DOUBLE", + "fa_turn": "DOUBLE", + "assets_turn": "DOUBLE", + # 盈利能力指标 + "op_income": "DOUBLE", + "valuechange_income": "DOUBLE", + "interst_income": "DOUBLE", + "daa": "DOUBLE", + "ebit": "DOUBLE", + "ebitda": "DOUBLE", + "fcff": "DOUBLE", + "fcfe": "DOUBLE", + # 资本结构指标 + "current_exint": "DOUBLE", + "noncurrent_exint": "DOUBLE", + "interestdebt": "DOUBLE", + "netdebt": "DOUBLE", + "tangible_asset": "DOUBLE", + "working_capital": "DOUBLE", + "networking_capital": "DOUBLE", + "invest_capital": "DOUBLE", + "retained_earnings": "DOUBLE", + # 每股指标 + "diluted2_eps": "DOUBLE", + "bps": "DOUBLE", + "ocfps": "DOUBLE", + "retainedps": "DOUBLE", + "cfps": "DOUBLE", + "ebit_ps": "DOUBLE", + "fcff_ps": "DOUBLE", + "fcfe_ps": "DOUBLE", + # 销售能力指标 + "netprofit_margin": "DOUBLE", + "grossprofit_margin": "DOUBLE", + "cogs_of_sales": "DOUBLE", + "expense_of_sales": "DOUBLE", + "profit_to_gr": "DOUBLE", + "saleexp_to_gr": "DOUBLE", + "adminexp_of_gr": "DOUBLE", + "finaexp_of_gr": "DOUBLE", + "impai_ttm": "DOUBLE", + "gc_of_gr": "DOUBLE", + "op_of_gr": "DOUBLE", + "ebit_of_gr": "DOUBLE", + # 投资回报率指标 + "roe": "DOUBLE", + "roe_waa": "DOUBLE", + "roe_dt": "DOUBLE", + "roa": "DOUBLE", + "npta": "DOUBLE", + "roic": "DOUBLE", + "roe_yearly": "DOUBLE", + "roa2_yearly": "DOUBLE", + "roe_avg": "DOUBLE", + # 利润结构指标 + "opincome_of_ebt": "DOUBLE", + "investincome_of_ebt": "DOUBLE", + "n_op_profit_of_ebt": "DOUBLE", + "tax_to_ebt": "DOUBLE", + "dtprofit_to_profit": "DOUBLE", + # 现金流量指标 + "salescash_to_or": "DOUBLE", + "ocf_to_or": "DOUBLE", + "ocf_to_opincome": "DOUBLE", + # 资本支出指标 + "capitalized_to_da": "DOUBLE", + # 杠杆与偿债能力指标 + "debt_to_assets": "DOUBLE", + "assets_to_eqt": "DOUBLE", + "dp_assets_to_eqt": "DOUBLE", + "ca_to_assets": "DOUBLE", + "nca_to_assets": "DOUBLE", + "tbassets_to_totalassets": "DOUBLE", + "int_to_talcap": "DOUBLE", + "eqt_to_talcapital": "DOUBLE", + "currentdebt_to_debt": "DOUBLE", + "longdeb_to_debt": "DOUBLE", + "ocf_to_shortdebt": "DOUBLE", + "debt_to_eqt": "DOUBLE", + "eqt_to_debt": "DOUBLE", + "eqt_to_interestdebt": "DOUBLE", + "tangibleasset_to_debt": "DOUBLE", + "tangasset_to_intdebt": "DOUBLE", + "tangibleasset_to_netdebt": "DOUBLE", + "ocf_to_debt": "DOUBLE", + "ocf_to_interestdebt": "DOUBLE", + "ocf_to_netdebt": "DOUBLE", + "ebit_to_interest": "DOUBLE", + "longdebt_to_workingcapital": "DOUBLE", + "ebitda_to_debt": "DOUBLE", + # 营运周期指标 + "turn_days": "DOUBLE", + "roa_yearly": "DOUBLE", + "roa_dp": "DOUBLE", + "fixed_assets": "DOUBLE", + # 利润质量指标 + "profit_prefin_exp": "DOUBLE", + "non_op_profit": "DOUBLE", + "op_to_ebt": "DOUBLE", + "nop_to_ebt": "DOUBLE", + "ocf_to_profit": "DOUBLE", + # 流动性指标 + "cash_to_liqdebt": "DOUBLE", + "cash_to_liqdebt_withinterest": "DOUBLE", + "op_to_liqdebt": "DOUBLE", + "op_to_debt": "DOUBLE", + "roic_yearly": "DOUBLE", + "total_fa_trun": "DOUBLE", + "profit_to_op": "DOUBLE", + # 单季度指标 (q_*) + "q_opincome": "DOUBLE", + "q_investincome": "DOUBLE", + "q_dtprofit": "DOUBLE", + "q_eps": "DOUBLE", + "q_netprofit_margin": "DOUBLE", + "q_gsprofit_margin": "DOUBLE", + "q_exp_to_sales": "DOUBLE", + "q_profit_to_gr": "DOUBLE", + "q_saleexp_to_gr": "DOUBLE", + "q_adminexp_to_gr": "DOUBLE", + "q_finaexp_to_gr": "DOUBLE", + "q_impair_to_gr_ttm": "DOUBLE", + "q_gc_to_gr": "DOUBLE", + "q_op_to_gr": "DOUBLE", + "q_roe": "DOUBLE", + "q_dt_roe": "DOUBLE", + "q_npta": "DOUBLE", + "q_opincome_to_ebt": "DOUBLE", + "q_investincome_to_ebt": "DOUBLE", + "q_dtprofit_to_profit": "DOUBLE", + "q_salescash_to_or": "DOUBLE", + "q_ocf_to_sales": "DOUBLE", + "q_ocf_to_or": "DOUBLE", + # 同比增长率指标 (*_yoy) + "basic_eps_yoy": "DOUBLE", + "dt_eps_yoy": "DOUBLE", + "cfps_yoy": "DOUBLE", + "op_yoy": "DOUBLE", + "ebt_yoy": "DOUBLE", + "netprofit_yoy": "DOUBLE", + "dt_netprofit_yoy": "DOUBLE", + "ocf_yoy": "DOUBLE", + "roe_yoy": "DOUBLE", + "bps_yoy": "DOUBLE", + "assets_yoy": "DOUBLE", + "eqt_yoy": "DOUBLE", + "tr_yoy": "DOUBLE", + "or_yoy": "DOUBLE", + # 单季度增长指标 (q_*_yoy, q_*_qoq) + "q_gr_yoy": "DOUBLE", + "q_gr_qoq": "DOUBLE", + "q_sales_yoy": "DOUBLE", + "q_sales_qoq": "DOUBLE", + "q_op_yoy": "DOUBLE", + "q_op_qoq": "DOUBLE", + "q_profit_yoy": "DOUBLE", + "q_profit_qoq": "DOUBLE", + "q_netprofit_yoy": "DOUBLE", + "q_netprofit_qoq": "DOUBLE", + # 其他指标 + "equity_yoy": "DOUBLE", + "rd_exp": "DOUBLE", + "update_flag": "VARCHAR(1)", + } + + # 索引定义(不要创建唯一索引) + # 注意:财务数据可能发生多次修正,不设置主键和唯一索引 + TABLE_INDEXES = [ + ("idx_financial_fina_indicator_ts_code", ["ts_code"]), + ("idx_financial_fina_indicator_end_date", ["end_date"]), + ("idx_financial_fina_indicator_ts_period", ["ts_code", "end_date"]), + ] + + def __init__(self): + """初始化财务指标同步器。""" + super().__init__() + self._fields = None # 默认返回全部字段 + + def fetch_single_quarter(self, period: str) -> pd.DataFrame: + """获取单季度的全部上市公司财务指标数据。 + + 注意:fina_indicator_vip 接口每次请求最多返回 100 条记录, + 需要通过 offset 参数循环获取该季度的全部数据。 + + Args: + period: 报告期,季度最后一天日期(如 '20231231') + + Returns: + 包含该季度全部上市公司财务指标数据的 DataFrame + """ + all_data = [] + offset = 0 + limit = 100 # API 限制每次最多返回 100 条 + + while True: + params = { + "period": period, + "limit": limit, + "offset": offset, + } + + if self._fields: + params["fields"] = self._fields + + df = self.client.query(self.api_name, **params) + + if df.empty: + break + + all_data.append(df) + + # 如果返回的数据少于 limit,说明已经取完 + if len(df) < limit: + break + + offset += limit + + if not all_data: + return pd.DataFrame() + + return pd.concat(all_data, ignore_index=True) + + +# ============================================================================= +# 便捷函数 +# ============================================================================= + + +def sync_fina_indicator( + force_full: bool = False, + dry_run: bool = False, +) -> list: + """同步财务指标数据(便捷函数)。 + + Args: + force_full: 若为 True,强制全量同步 + dry_run: 若为 True,仅预览不写入 + + Returns: + 同步结果列表 + + Example: + >>> # 增量同步 + >>> sync_fina_indicator() + >>> + >>> # 全量同步 + >>> sync_fina_indicator(force_full=True) + >>> + >>> # 预览 + >>> sync_fina_indicator(dry_run=True) + """ + return sync_financial_data(FinaIndicatorQuarterSync, force_full, dry_run) + + +def preview_fina_indicator_sync() -> dict: + """预览财务指标同步信息。 + + Returns: + 预览信息字典 + """ + return preview_financial_sync(FinaIndicatorQuarterSync) + + +def get_fina_indicator(period: str, fields: Optional[str] = None) -> pd.DataFrame: + """获取财务指标数据(原始接口,单季度)。 + + 用于直接获取某个季度的数据,不进行同步管理。 + 注意:该接口每次最多返回 100 条记录,如需获取全部数据请使用同步功能。 + + Args: + period: 报告期,季度最后一天日期(如 '20231231') + fields: 指定返回字段,默认返回全部字段 + + Returns: + 包含财务指标数据的 DataFrame + """ + client = TushareClient() + + if fields is None: + fields = ( + "ts_code,ann_date,end_date,eps,dt_eps,total_revenue_ps,revenue_ps," + "capital_rese_ps,surplus_rese_ps,undist_profit_ps,extra_item,profit_dedt," + "gross_margin,current_ratio,quick_ratio,cash_ratio,invturn_days,arturn_days," + "inv_turn,ar_turn,ca_turn,fa_turn,assets_turn,op_income,valuechange_income," + "interst_income,daa,ebit,ebitda,fcff,fcfe,current_exint,noncurrent_exint," + "interestdebt,netdebt,tangible_asset,working_capital,networking_capital," + "invest_capital,retained_earnings,diluted2_eps,bps,ocfps,retainedps,cfps," + "ebit_ps,fcff_ps,fcfe_ps,netprofit_margin,grossprofit_margin,cogs_of_sales," + "expense_of_sales,profit_to_gr,saleexp_to_gr,adminexp_of_gr,finaexp_of_gr," + "impai_ttm,gc_of_gr,op_of_gr,ebit_of_gr,roe,roe_waa,roe_dt,roa,npta,roic," + "roe_yearly,roa2_yearly,roe_avg,opincome_of_ebt,investincome_of_ebt," + "n_op_profit_of_ebt,tax_to_ebt,dtprofit_to_profit,salescash_to_or," + "ocf_to_or,ocf_to_opincome,capitalized_to_da,debt_to_assets,assets_to_eqt," + "dp_assets_to_eqt,ca_to_assets,nca_to_assets,tbassets_to_totalassets," + "int_to_talcap,eqt_to_talcapital,currentdebt_to_debt,longdeb_to_debt," + "ocf_to_shortdebt,debt_to_eqt,eqt_to_debt,eqt_to_interestdebt," + "tangibleasset_to_debt,tangasset_to_intdebt,tangibleasset_to_netdebt," + "ocf_to_debt,ocf_to_interestdebt,ocf_to_netdebt,ebit_to_interest," + "longdebt_to_workingcapital,ebitda_to_debt,turn_days,roa_yearly,roa_dp," + "fixed_assets,profit_prefin_exp,non_op_profit,op_to_ebt,nop_to_ebt," + "ocf_to_profit,cash_to_liqdebt,cash_to_liqdebt_withinterest,op_to_liqdebt," + "op_to_debt,roic_yearly,total_fa_trun,profit_to_op,q_opincome," + "q_investincome,q_dtprofit,q_eps,q_netprofit_margin,q_gsprofit_margin," + "q_exp_to_sales,q_profit_to_gr,q_saleexp_to_gr,q_adminexp_to_gr," + "q_finaexp_to_gr,q_impair_to_gr_ttm,q_gc_to_gr,q_op_to_gr,q_roe,q_dt_roe," + "q_npta,q_opincome_to_ebt,q_investincome_to_ebt,q_dtprofit_to_profit," + "q_salescash_to_or,q_ocf_to_sales,q_ocf_to_or,basic_eps_yoy,dt_eps_yoy," + "cfps_yoy,op_yoy,ebt_yoy,netprofit_yoy,dt_netprofit_yoy,ocf_yoy,roe_yoy," + "bps_yoy,assets_yoy,eqt_yoy,tr_yoy,or_yoy,q_gr_yoy,q_gr_qoq,q_sales_yoy," + "q_sales_qoq,q_op_yoy,q_op_qoq,q_profit_yoy,q_profit_qoq,q_netprofit_yoy," + "q_netprofit_qoq,equity_yoy,rd_exp,update_flag" + ) + + return client.query("fina_indicator_vip", period=period, fields=fields) diff --git a/src/data/api_wrappers/financial_data/api_financial_sync.py b/src/data/api_wrappers/financial_data/api_financial_sync.py index 39c60fe..38e91ac 100644 --- a/src/data/api_wrappers/financial_data/api_financial_sync.py +++ b/src/data/api_wrappers/financial_data/api_financial_sync.py @@ -7,6 +7,7 @@ - income: 利润表 (已实现) - balance: 资产负债表 (已实现) - cashflow: 现金流量表 (已实现) +- fina_indicator: 财务指标 (已实现) 使用方式: # 同步所有财务数据(增量) @@ -25,12 +26,15 @@ # 只同步现金流量表 sync_financial(data_types=["cashflow"]) + # 只同步财务指标 + sync_financial(data_types=["fina_indicator"]) + # 预览同步 from src.data.api_wrappers.financial_data.api_financial_sync import preview_sync preview = preview_sync() """ -from typing import List, Dict, Optional +from typing import List, Optional from src.data.api_wrappers.financial_data.api_income import ( IncomeQuarterSync, @@ -47,6 +51,11 @@ from src.data.api_wrappers.financial_data.api_cashflow import ( sync_cashflow, preview_cashflow_sync, ) +from src.data.api_wrappers.financial_data.api_fina_indicator import ( + FinaIndicatorQuarterSync, + sync_fina_indicator, + preview_fina_indicator_sync, +) # 支持的财务数据类型映射 @@ -69,6 +78,12 @@ FINANCIAL_SYNCERS = { "preview_func": preview_cashflow_sync, "display_name": "现金流量表", }, + "fina_indicator": { + "syncer_class": FinaIndicatorQuarterSync, + "sync_func": sync_fina_indicator, + "preview_func": preview_fina_indicator_sync, + "display_name": "财务指标", + }, } @@ -76,7 +91,7 @@ def sync_financial( data_types: Optional[List[str]] = None, force_full: bool = False, dry_run: bool = False, -) -> Dict[str, List]: +) -> dict[str, list]: """同步财务数据(调度函数)。 根据指定的数据类型,调度对应的同步器执行同步。 @@ -157,7 +172,7 @@ def sync_financial( return results -def preview_sync(data_types: Optional[List[str]] = None) -> Dict[str, Dict]: +def preview_sync(data_types: Optional[List[str]] = None) -> dict[str, dict]: """预览财务数据同步信息。 Args: @@ -189,7 +204,7 @@ def preview_sync(data_types: Optional[List[str]] = None) -> Dict[str, Dict]: return previews -def list_financial_types() -> List[Dict]: +def list_financial_types() -> list[dict]: """列出所有支持的财务数据类型。 Returns: diff --git a/src/experiment/regression.ipynb b/src/experiment/regression.ipynb index 33638ab..dfa6f5f 100644 --- a/src/experiment/regression.ipynb +++ b/src/experiment/regression.ipynb @@ -11,8 +11,8 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:00.925979Z", - "start_time": "2026-03-08T12:42:00.366875Z" + "end_time": "2026-03-08T15:07:39.837396Z", + "start_time": "2026-03-08T15:07:39.834964Z" } }, "source": [ @@ -37,7 +37,7 @@ "from src.training.config import TrainingConfig" ], "outputs": [], - "execution_count": 1 + "execution_count": 19 }, { "cell_type": "markdown", @@ -49,8 +49,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:00.940517Z", - "start_time": "2026-03-08T12:42:00.935125Z" + "end_time": "2026-03-08T15:07:39.849909Z", + "start_time": "2026-03-08T15:07:39.843845Z" } }, "cell_type": "code", @@ -110,7 +110,7 @@ " return data" ], "outputs": [], - "execution_count": 2 + "execution_count": 20 }, { "cell_type": "markdown", @@ -124,8 +124,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:00.953087Z", - "start_time": "2026-03-08T12:42:00.947665Z" + "end_time": "2026-03-08T15:07:39.857927Z", + "start_time": "2026-03-08T15:07:39.853639Z" } }, "cell_type": "code", @@ -134,61 +134,56 @@ "LABEL_NAME = 'future_return_5'\n", "\n", "FACTOR_DEFINITIONS = {\n", - " # 1. 价格动量因子\n", - " \"ma5\": \"ts_mean(close, 5)\",\n", - " \"ma10\": \"ts_mean(close, 10)\",\n", - " \"ma20\": \"ts_mean(close, 20)\",\n", - " \"ma_ratio\": \"ts_mean(close, 5) / ts_mean(close, 20) - 1\",\n", - " # 2. 波动率因子\n", - " \"volatility_5\": \"ts_std(close, 5)\",\n", - " \"volatility_20\": \"ts_std(close, 20)\",\n", - " \"vol_ratio\": \"ts_std(close, 5) / (ts_std(close, 20) + 1e-8)\",\n", - " # 3. 收益率动量因子\n", + " # ================= 1. 价格与趋势因子 (Trend & Momentum) =================\n", + " \"ma_5\": \"ts_mean(close, 5)\",\n", + " \"ma_20\": \"ts_mean(close, 20)\",\n", + " \"ma_ratio_5_20\": \"ts_mean(close, 5) / (ts_mean(close, 20) + 1e-8) - 1\", # 均线发散度\n", + " \"bias_10\": \"close / (ts_mean(close, 10) + 1e-8) - 1\", # 10日乖离率(反转/动量)\n", + " \"high_low_ratio\": \"(close - ts_min(low, 20)) / (ts_max(high, 20) - ts_min(low, 20) + 1e-8)\", # 价格在近20日的位置(威廉指标变形)\n", + " \"bbi_ratio\": \"(ts_mean(close, 3) + ts_mean(close, 6) + ts_mean(close, 12) + ts_mean(close, 24)) / (4 * close + 1e-8)\", # BBI 多空指标比率\n", + "\n", + " # ================= 2. 收益率与波动率因子 (Return & Volatility) =================\n", + " \"return_5\": \"(close / ts_delay(close, 5)) - 1\", # 5日动量/反转\n", " \"return_10\": \"(close / ts_delay(close, 10)) - 1\",\n", " \"return_20\": \"(close / ts_delay(close, 20)) - 1\",\n", - " # 4. 收益率变化因子\n", - " \"return_diff\": \"(close / ts_delay(close, 5)) - 1 - ((close / ts_delay(close, 10)) - 1)\",\n", - " # 5. 成交量因子\n", - " \"vol_ma5\": \"ts_mean(vol, 5)\",\n", - " \"vol_ma20\": \"ts_mean(vol, 20)\",\n", - " \"vol_ratio\": \"ts_mean(vol, 5) / (ts_mean(vol, 20) + 1e-8)\",\n", - " # 6. 市值因子(截面排名)\n", - " \"market_cap_rank\": \"cs_rank(total_mv)\",\n", - " # 7. 价格位置因子\n", - " \"high_low_ratio\": \"(close - ts_min(low, 20)) / (ts_max(high, 20) - ts_min(low, 20) + 1e-8)\",\n", - " # 8. 技术指标因子(3.1 完全可实现)\n", - " \"turnover_rate_mean_5\": \"ts_mean(turnover_rate, 5)\", # 5日均换手率\n", - " \"bbi_ratio_factor\": \"(ts_mean(close, 3) + ts_mean(close, 6) + ts_mean(close, 12) + ts_mean(close, 24)) / 4 / close\", # BBI比率\n", - " # 9. ARBR 因子(3.1 完全可实现)\n", - " # \"AR\": \"ts_sum(high - open, 26) / ts_sum(open - low, 26) * 100\", # AR人气指标\n", - " # \"BR\": \"ts_sum(max_(0, high - ts_delay(close, 1)), 26) / ts_sum(max_(0, ts_delay(close, 1) - low), 26) * 100\", # BR意愿指标\n", - " # \"AR_BR\": \"AR - BR\", # ARBR差值\n", - " # 10. 成交量因子(3.1 完全可实现)\n", - " \"volume_change_rate\": \"ts_mean(vol, 2) / ts_mean(vol, 10) - 1\", # 成交量变化率\n", - " \"turnover_deviation\": \"(turnover_rate - ts_mean(turnover_rate, 3)) / ts_std(turnover_rate, 3)\", # 换手率偏离度\n", - " \"vol_std_5\": \"ts_std(ts_delta(vol, 1), 5)\", # 成交量变化标准差\n", - " # 11. 收益率因子(3.1 完全可实现)\n", - " # \"return_5\": \"close / ts_delay(close, 5) - 1\", # 5日收益率\n", - " \"std_return_5\": \"ts_std((close - ts_delay(close, 1)) / ts_delay(close, 1), 5)\", # 5日收益率标准差\n", - " \"std_return_90\": \"ts_std((close - ts_delay(close, 1)) / ts_delay(close, 1), 90)\", # 90日收益率标准差\n", - " # 12. 截面排序因子(3.1 完全可实现)\n", - " \"cs_rank_volume_ratio\": \"cs_rank(volume_ratio)\", # 量比截面排名\n", - " \"cs_rank_turnover_rate\": \"cs_rank(turnover_rate)\", # 换手率截面排名\n", - " \"n_income_rank\": \"cs_rank(n_income)\", # 净利润截面排名\n", - " # 13. 财务数据因子(来自利润表 financial_income)\n", - " \"operate_profit_rank\": \"cs_rank(operate_profit)\", # 营业利润截面排名\n", - " \"total_profit_rank\": \"cs_rank(total_profit)\", # 利润总额截面排名\n", - " \"ebit_rank\": \"cs_rank(ebit)\", # 息税前利润截面排名\n", - " \"ebitda_rank\": \"cs_rank(ebitda)\", # 息税折旧摊销前利润截面排名\n", - " # 14. 财务数据因子(来自资产负债表 financial_balance)\n", - " \"total_liab_rank\": \"cs_rank(total_liab)\", # 总负债截面排名\n", - " \"money_cap_rank\": \"cs_rank(money_cap)\", # 货币资金截面排名\n", - " # 15. 财务数据因子(来自现金流量表 financial_cashflow)\n", - " \"n_cashflow_act_rank\": \"cs_rank(n_cashflow_act)\", # 经营活动现金流净额截面排名\n", - " # 16. 财务估值因子\n", - " \"profit_to_market_cap\": \"n_income / (total_mv + 1e-8)\", # 净利润率(净利润/市值)\n", - " \"cashflow_to_market_cap\": \"n_cashflow_act / (total_mv + 1e-8)\", # 经营现金流/市值\n", - " \"operate_profit_to_market_cap\": \"operate_profit / (total_mv + 1e-8)\", # 营业利润/市值\n", + " \"return_diff_5_10\": \"(close / ts_delay(close, 5)) - (close / ts_delay(close, 10))\", # 收益率加速/减速趋势\n", + " \"volatility_5\": \"ts_std(close, 5)\",\n", + " \"volatility_20\": \"ts_std(close, 20)\",\n", + " \"volatility_ratio\": \"ts_std(close, 5) / (ts_std(close, 20) + 1e-8)\", # 波动率期限结构(近期是否剧烈震荡)\n", + " \"std_return_5\": \"ts_std((close / ts_delay(close, 1)) - 1, 5)\", # 5日真实收益率波动率\n", + " \"std_return_20\": \"ts_std((close / ts_delay(close, 1)) - 1, 20)\", # 20日真实收益率波动率\n", + "\n", + " # ================= 3. 量能与流动性因子 (Volume & Liquidity) =================\n", + " \"volume_ratio_5_20\": \"ts_mean(vol, 5) / (ts_mean(vol, 20) + 1e-8)\", # 相对放量指标\n", + " \"volume_change_rate\": \"ts_mean(vol, 2) / (ts_mean(vol, 10) + 1e-8) - 1\", # 短期成交量异动\n", + " \"turnover_rate_mean_5\": \"ts_mean(turnover_rate, 5)\", # 5日平均换手率(活跃度)\n", + " \"turnover_rate_std_20\": \"ts_std(turnover_rate, 20)\", # 换手率波动率(炒作情绪稳定性)\n", + " \"turnover_deviation\": \"(turnover_rate - ts_mean(turnover_rate, 10)) / (ts_std(turnover_rate, 10) + 1e-8)\", # 换手率偏离度\n", + " # \"amihud_illiq_20\": \"ts_mean(abs((close / ts_delay(close, 1)) - 1) / (amount + 1e-8), 20)\", # Amihud非流动性指标(核心Alpha)\n", + "\n", + " # ================= 4. 截面排名因子 (Cross-Sectional Rank) =================\n", + " \"market_cap_rank\": \"cs_rank(total_mv)\", # 市值规模排名(Size因子)\n", + " \"turnover_rank\": \"cs_rank(turnover_rate)\", # 当日换手率全市场排名\n", + " \"return_5_rank\": \"cs_rank((close / ts_delay(close, 5)) - 1)\", # 5日收益率截面排名(横向比价)\n", + "\n", + " # # ================= 5. 财务质量因子 (Quality) =================\n", + " # # 注:底层数据引擎需确保 n_income 等字段已就绪,或者映射到 fina_indicator\n", + " # \"roe\": \"n_income / (total_hldr_eqy_exc_min_int + 1e-8)\", # ROE 净资产收益率 (盈利效率)\n", + " # \"roa\": \"n_income / (total_assets + 1e-8)\", # ROA 总资产收益率\n", + " # \"profit_margin\": \"n_income / (revenue + 1e-8)\", # 销售净利率 (定价权)\n", + " # \"debt_to_asset\": \"total_liab / (total_assets + 1e-8)\", # 资产负债率 (杠杆/破产风险)\n", + " # \"cash_to_liab\": \"money_cap / (total_liab + 1e-8)\", # 现金流负债比 (流动性风险)\n", + " #\n", + " # # ================= 6. 财务估值因子 (Value / Yield) =================\n", + " # # 注:经典量化不用 PE (Price/Earn),而是用 EP (Earn/Price),因为亏损公司的 PE 是负的或无穷大,EP 可以平滑处理。\n", + " # \"EP\": \"n_income / (total_mv * 10000 + 1e-8)\", # 盈利收益率 (Earnings Yield, 相当于 1/PE) *注:Tushare市值需乘10000对齐单位\n", + " # \"BP\": \"total_hldr_eqy_exc_min_int / (total_mv * 10000 + 1e-8)\", # 账面市值比 (Book to Price, 相当于 1/PB)\n", + " # \"CP\": \"n_cashflow_act / (total_mv * 10000 + 1e-8)\", # 现金流收益率 (Cashflow Yield)\n", + " # \"SP\": \"revenue / (total_mv * 10000 + 1e-8)\", # 销售收益率 (Sales to Price, 相当于 1/PS)\n", + " #\n", + " # # 估值截面排名 (直接提取全市场最便宜、最赚钱的公司)\n", + " # \"EP_rank\": \"cs_rank(n_income / (total_mv + 1e-8))\",\n", + " # \"BP_rank\": \"cs_rank(total_hldr_eqy_exc_min_int / (total_mv + 1e-8))\",\n", "}\n", "\n", "# Label 因子定义(不参与训练,用于计算目标)\n", @@ -197,7 +192,7 @@ "}" ], "outputs": [], - "execution_count": 3 + "execution_count": 21 }, { "cell_type": "markdown", @@ -210,8 +205,8 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:00.961926Z", - "start_time": "2026-03-08T12:42:00.959032Z" + "end_time": "2026-03-08T15:07:39.865371Z", + "start_time": "2026-03-08T15:07:39.861138Z" } }, "source": [ @@ -273,7 +268,7 @@ "TOP_N = 5 # 可调整为 10, 20 等" ], "outputs": [], - "execution_count": 4 + "execution_count": 22 }, { "cell_type": "markdown", @@ -288,8 +283,8 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:08.872125Z", - "start_time": "2026-03-08T12:42:00.967162Z" + "end_time": "2026-03-08T15:07:47.887413Z", + "start_time": "2026-03-08T15:07:39.874187Z" } }, "source": [ @@ -386,47 +381,36 @@ "================================================================================\n", "\n", "注册特征因子:\n", - " - ma5: ts_mean(close, 5)\n", - " - ma10: ts_mean(close, 10)\n", - " - ma20: ts_mean(close, 20)\n", - " - ma_ratio: ts_mean(close, 5) / ts_mean(close, 20) - 1\n", - " - volatility_5: ts_std(close, 5)\n", - " - volatility_20: ts_std(close, 20)\n", - " - vol_ratio: ts_mean(vol, 5) / (ts_mean(vol, 20) + 1e-8)\n", + " - ma_5: ts_mean(close, 5)\n", + " - ma_20: ts_mean(close, 20)\n", + " - ma_ratio_5_20: ts_mean(close, 5) / (ts_mean(close, 20) + 1e-8) - 1\n", + " - bias_10: close / (ts_mean(close, 10) + 1e-8) - 1\n", + " - high_low_ratio: (close - ts_min(low, 20)) / (ts_max(high, 20) - ts_min(low, 20) + 1e-8)\n", + " - bbi_ratio: (ts_mean(close, 3) + ts_mean(close, 6) + ts_mean(close, 12) + ts_mean(close, 24)) / (4 * close + 1e-8)\n", + " - return_5: (close / ts_delay(close, 5)) - 1\n", " - return_10: (close / ts_delay(close, 10)) - 1\n", " - return_20: (close / ts_delay(close, 20)) - 1\n", - " - return_diff: (close / ts_delay(close, 5)) - 1 - ((close / ts_delay(close, 10)) - 1)\n", - " - vol_ma5: ts_mean(vol, 5)\n", - " - vol_ma20: ts_mean(vol, 20)\n", - " - market_cap_rank: cs_rank(total_mv)\n", - " - high_low_ratio: (close - ts_min(low, 20)) / (ts_max(high, 20) - ts_min(low, 20) + 1e-8)\n", + " - return_diff_5_10: (close / ts_delay(close, 5)) - (close / ts_delay(close, 10))\n", + " - volatility_5: ts_std(close, 5)\n", + " - volatility_20: ts_std(close, 20)\n", + " - volatility_ratio: ts_std(close, 5) / (ts_std(close, 20) + 1e-8)\n", + " - std_return_5: ts_std((close / ts_delay(close, 1)) - 1, 5)\n", + " - std_return_20: ts_std((close / ts_delay(close, 1)) - 1, 20)\n", + " - volume_ratio_5_20: ts_mean(vol, 5) / (ts_mean(vol, 20) + 1e-8)\n", + " - volume_change_rate: ts_mean(vol, 2) / (ts_mean(vol, 10) + 1e-8) - 1\n", " - turnover_rate_mean_5: ts_mean(turnover_rate, 5)\n", - " - bbi_ratio_factor: (ts_mean(close, 3) + ts_mean(close, 6) + ts_mean(close, 12) + ts_mean(close, 24)) / 4 / close\n", - " - volume_change_rate: ts_mean(vol, 2) / ts_mean(vol, 10) - 1\n", - " - turnover_deviation: (turnover_rate - ts_mean(turnover_rate, 3)) / ts_std(turnover_rate, 3)\n", - " - vol_std_5: ts_std(ts_delta(vol, 1), 5)\n", - " - std_return_5: ts_std((close - ts_delay(close, 1)) / ts_delay(close, 1), 5)\n", - " - std_return_90: ts_std((close - ts_delay(close, 1)) / ts_delay(close, 1), 90)\n", - " - cs_rank_volume_ratio: cs_rank(volume_ratio)\n", - " - cs_rank_turnover_rate: cs_rank(turnover_rate)\n", - " - n_income_rank: cs_rank(n_income)\n", - " - operate_profit_rank: cs_rank(operate_profit)\n", - " - total_profit_rank: cs_rank(total_profit)\n", - " - ebit_rank: cs_rank(ebit)\n", - " - ebitda_rank: cs_rank(ebitda)\n", - " - total_liab_rank: cs_rank(total_liab)\n", - " - money_cap_rank: cs_rank(money_cap)\n", - " - n_cashflow_act_rank: cs_rank(n_cashflow_act)\n", - " - profit_to_market_cap: n_income / (total_mv + 1e-8)\n", - " - cashflow_to_market_cap: n_cashflow_act / (total_mv + 1e-8)\n", - " - operate_profit_to_market_cap: operate_profit / (total_mv + 1e-8)\n", + " - turnover_rate_std_20: ts_std(turnover_rate, 20)\n", + " - turnover_deviation: (turnover_rate - ts_mean(turnover_rate, 10)) / (ts_std(turnover_rate, 10) + 1e-8)\n", + " - market_cap_rank: cs_rank(total_mv)\n", + " - turnover_rank: cs_rank(turnover_rate)\n", + " - return_5_rank: cs_rank((close / ts_delay(close, 5)) - 1)\n", "\n", "注册 Label 因子:\n", " - future_return_5: (ts_delay(close, -5) / close) - 1\n", "\n", - "特征因子数: 34\n", + "特征因子数: 23\n", "Label: future_return_5\n", - "已注册因子总数: 35\n", + "已注册因子总数: 24\n", "\n", "[3] 准备数据\n", "\n", @@ -434,55 +418,34 @@ "准备数据\n", "================================================================================\n", "\n", - "计算因子: 20200101 - 20251231\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "D:\\PyProject\\ProStock\\src\\data\\financial_loader.py:148: UserWarning: Sortedness of columns cannot be checked when 'by' groups provided\n", - " merged = df_price.join_asof(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "数据形状: (7044952, 53)\n", - "数据列: ['ts_code', 'trade_date', 'turnover_rate', 'volume_ratio', 'high', 'vol', 'close', 'low', 'total_mv', 'f_ann_date', 'total_profit', 'operate_profit', 'ebit', 'n_income', 'ebitda', 'money_cap', 'total_liab', 'n_cashflow_act', 'ma5', 'ma10', 'ma20', 'ma_ratio', 'volatility_5', 'volatility_20', 'vol_ratio', 'return_10', 'return_20', 'return_diff', 'vol_ma5', 'vol_ma20', 'market_cap_rank', 'high_low_ratio', 'turnover_rate_mean_5', 'bbi_ratio_factor', 'volume_change_rate', 'turnover_deviation', 'vol_std_5', 'std_return_5', 'std_return_90', 'cs_rank_volume_ratio', 'cs_rank_turnover_rate', 'n_income_rank', 'operate_profit_rank', 'total_profit_rank', 'ebit_rank', 'ebitda_rank', 'total_liab_rank', 'money_cap_rank', 'n_cashflow_act_rank', 'profit_to_market_cap', 'cashflow_to_market_cap', 'operate_profit_to_market_cap', 'future_return_5']\n", + "计算因子: 20200101 - 20251231\n", + "数据形状: (7044952, 32)\n", + "数据列: ['ts_code', 'trade_date', 'high', 'close', 'low', 'vol', 'turnover_rate', 'total_mv', 'ma_5', 'ma_20', 'ma_ratio_5_20', 'bias_10', 'high_low_ratio', 'bbi_ratio', 'return_5', 'return_10', 'return_20', 'return_diff_5_10', 'volatility_5', 'volatility_20', 'volatility_ratio', 'std_return_5', 'std_return_20', 'volume_ratio_5_20', 'volume_change_rate', 'turnover_rate_mean_5', 'turnover_rate_std_20', 'turnover_deviation', 'market_cap_rank', 'turnover_rank', 'return_5_rank', 'future_return_5']\n", "\n", "前5行预览:\n", - "shape: (5, 53)\n", - "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", - "│ ts_code ┆ trade_dat ┆ turnover_ ┆ volume_ra ┆ … ┆ profit_to ┆ cashflow_ ┆ operate_p ┆ future_r │\n", - "│ --- ┆ e ┆ rate ┆ tio ┆ ┆ _market_c ┆ to_market ┆ rofit_to_ ┆ eturn_5 │\n", - "│ str ┆ --- ┆ --- ┆ --- ┆ ┆ ap ┆ _cap ┆ market_ca ┆ --- │\n", - "│ ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ p ┆ f64 │\n", - "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ --- ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ │\n", - "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", - "│ 000001.SZ ┆ 20200102 ┆ 0.7885 ┆ 2.18 ┆ … ┆ 721.52104 ┆ 2580.5045 ┆ 938.15146 ┆ -0.00474 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 1 ┆ 33 ┆ 4 ┆ 6 │\n", - "│ 000001.SZ ┆ 20200103 ┆ 0.5752 ┆ 1.21 ┆ … ┆ 708.50174 ┆ 2533.9412 ┆ 921.22323 ┆ -0.02852 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 4 ┆ 96 ┆ 7 ┆ │\n", - "│ 000001.SZ ┆ 20200106 ┆ 0.4442 ┆ 0.8 ┆ … ┆ 713.06736 ┆ 2550.2701 ┆ 927.15964 ┆ -0.00468 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 8 ┆ 5 ┆ 9 ┆ 5 │\n", - "│ 000001.SZ ┆ 20200107 ┆ 0.3755 ┆ 0.7 ┆ … ┆ 709.74110 ┆ 2538.3738 ┆ 922.83470 ┆ -0.02274 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 6 ┆ 46 ┆ 6 ┆ 3 │\n", - "│ 000001.SZ ┆ 20200108 ┆ 0.4369 ┆ 0.86 ┆ … ┆ 730.61584 ┆ 2613.0319 ┆ 949.97690 ┆ -0.00840 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 4 ┆ 01 ┆ 3 ┆ 1 │\n", - "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘\n", + "shape: (5, 32)\n", + "┌───────────┬────────────┬───────┬───────┬───┬─────────────┬─────────────┬────────────┬────────────┐\n", + "│ ts_code ┆ trade_date ┆ high ┆ close ┆ … ┆ market_cap_ ┆ turnover_ra ┆ return_5_r ┆ future_ret │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ rank ┆ nk ┆ ank ┆ urn_5 │\n", + "│ str ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", + "╞═══════════╪════════════╪═══════╪═══════╪═══╪═════════════╪═════════════╪════════════╪════════════╡\n", + "│ 002082.SZ ┆ 20200102 ┆ 29.23 ┆ 28.24 ┆ … ┆ 0.136631 ┆ 0.728075 ┆ null ┆ -0.024079 │\n", + "│ 600387.SH ┆ 20200102 ┆ 24.42 ┆ 24.28 ┆ … ┆ 0.381818 ┆ 0.561497 ┆ null ┆ 0.058896 │\n", + "│ 000592.SZ ┆ 20200102 ┆ 18.68 ┆ 18.42 ┆ … ┆ 0.53262 ┆ 0.436898 ┆ null ┆ 0.128122 │\n", + "│ 002920.SZ ┆ 20200102 ┆ 31.51 ┆ 31.29 ┆ … ┆ 0.831551 ┆ 0.575668 ┆ null ┆ 0.129434 │\n", + "│ 600138.SH ┆ 20200102 ┆ 68.71 ┆ 68.23 ┆ … ┆ 0.702139 ┆ 0.556551 ┆ null ┆ 0.010992 │\n", + "└───────────┴────────────┴───────┴───────┴───┴─────────────┴─────────────┴────────────┴────────────┘\n", "\n", "[配置] 训练期: 20200101 - 20231231\n", "[配置] 验证期: 20240101 - 20241231\n", "[配置] 测试期: 20250101 - 20251231\n", - "[配置] 特征数: 34\n", + "[配置] 特征数: 23\n", "[配置] 目标变量: future_return_5\n" ] } ], - "execution_count": 5 + "execution_count": 23 }, { "cell_type": "markdown", @@ -495,8 +458,8 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:17.812047Z", - "start_time": "2026-03-08T12:42:08.881623Z" + "end_time": "2026-03-08T15:07:53.576371Z", + "start_time": "2026-03-08T15:07:47.898097Z" } }, "source": [ @@ -532,22 +495,22 @@ "[步骤 1/6] 股票池筛选\n", "------------------------------------------------------------\n", " 执行每日独立筛选股票池...\n", - " 筛选前数据规模: (7044952, 53)\n", - " 筛选后数据规模: (4532198, 53)\n", + " 筛选前数据规模: (7044952, 32)\n", + " 筛选后数据规模: (4532198, 32)\n", " 筛选前股票数: 5678\n", " 筛选后股票数: 3359\n", " 删除记录数: 2512754\n" ] } ], - "execution_count": 6 + "execution_count": 24 }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:19.603242Z", - "start_time": "2026-03-08T12:42:17.822762Z" + "end_time": "2026-03-08T15:07:54.854708Z", + "start_time": "2026-03-08T15:07:53.584313Z" } }, "source": [ @@ -592,9 +555,9 @@ "\n", "[步骤 2/6] 划分训练集、验证集和测试集\n", "------------------------------------------------------------\n", - " 训练集数据规模: (2991506, 53)\n", - " 验证集数据规模: (769485, 53)\n", - " 测试集数据规模: (771207, 53)\n", + " 训练集数据规模: (2991506, 32)\n", + " 验证集数据规模: (769485, 32)\n", + " 测试集数据规模: (771207, 32)\n", " 训练集股票数: 3297\n", " 验证集股票数: 3220\n", " 测试集股票数: 3215\n", @@ -603,81 +566,60 @@ " 测试集日期范围: 20250102 - 20251231\n", "\n", " 训练集前5行预览:\n", - "shape: (5, 53)\n", - "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", - "│ ts_code ┆ trade_dat ┆ turnover_ ┆ volume_ra ┆ … ┆ profit_to ┆ cashflow_ ┆ operate_p ┆ future_r │\n", - "│ --- ┆ e ┆ rate ┆ tio ┆ ┆ _market_c ┆ to_market ┆ rofit_to_ ┆ eturn_5 │\n", - "│ str ┆ --- ┆ --- ┆ --- ┆ ┆ ap ┆ _cap ┆ market_ca ┆ --- │\n", - "│ ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ p ┆ f64 │\n", - "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ --- ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ │\n", - "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", - "│ 000001.SZ ┆ 20200102 ┆ 0.7885 ┆ 2.18 ┆ … ┆ 721.52104 ┆ 2580.5045 ┆ 938.15146 ┆ -0.00474 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 1 ┆ 33 ┆ 4 ┆ 6 │\n", - "│ 000002.SZ ┆ 20200102 ┆ 1.0418 ┆ 1.31 ┆ … ┆ 776.91820 ┆ 47.131053 ┆ 1140.2493 ┆ -0.01105 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 1 ┆ ┆ 95 ┆ 7 │\n", - "│ 000004.SZ ┆ 20200102 ┆ 2.1613 ┆ 0.92 ┆ … ┆ -69.58089 ┆ -52.61755 ┆ -24.82135 ┆ -0.00044 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 5 ┆ 4 ┆ 9 ┆ 1 │\n", - "│ 000005.SZ ┆ 20200102 ┆ 0.9843 ┆ 1.35 ┆ … ┆ 142.55925 ┆ 385.57490 ┆ 208.12520 ┆ 0.022337 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 6 ┆ 4 ┆ 2 ┆ │\n", - "│ 000006.SZ ┆ 20200102 ┆ 0.9252 ┆ 1.62 ┆ … ┆ 633.27582 ┆ 650.95370 ┆ 819.10495 ┆ 0.012964 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ 3 ┆ 5 ┆ │\n", - "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘\n", + "shape: (5, 32)\n", + "┌───────────┬────────────┬───────┬───────┬───┬─────────────┬─────────────┬────────────┬────────────┐\n", + "│ ts_code ┆ trade_date ┆ high ┆ close ┆ … ┆ market_cap_ ┆ turnover_ra ┆ return_5_r ┆ future_ret │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ rank ┆ nk ┆ ank ┆ urn_5 │\n", + "│ str ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", + "╞═══════════╪════════════╪═══════╪═══════╪═══╪═════════════╪═════════════╪════════════╪════════════╡\n", + "│ 002082.SZ ┆ 20200102 ┆ 29.23 ┆ 28.24 ┆ … ┆ 0.136631 ┆ 0.728075 ┆ null ┆ -0.024079 │\n", + "│ 600387.SH ┆ 20200102 ┆ 24.42 ┆ 24.28 ┆ … ┆ 0.381818 ┆ 0.561497 ┆ null ┆ 0.058896 │\n", + "│ 000592.SZ ┆ 20200102 ┆ 18.68 ┆ 18.42 ┆ … ┆ 0.53262 ┆ 0.436898 ┆ null ┆ 0.128122 │\n", + "│ 002920.SZ ┆ 20200102 ┆ 31.51 ┆ 31.29 ┆ … ┆ 0.831551 ┆ 0.575668 ┆ null ┆ 0.129434 │\n", + "│ 600138.SH ┆ 20200102 ┆ 68.71 ┆ 68.23 ┆ … ┆ 0.702139 ┆ 0.556551 ┆ null ┆ 0.010992 │\n", + "└───────────┴────────────┴───────┴───────┴───┴─────────────┴─────────────┴────────────┴────────────┘\n", "\n", " 验证集前5行预览:\n", - "shape: (5, 53)\n", - "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", - "│ ts_code ┆ trade_dat ┆ turnover_ ┆ volume_ra ┆ … ┆ profit_to ┆ cashflow_ ┆ operate_p ┆ future_r │\n", - "│ --- ┆ e ┆ rate ┆ tio ┆ ┆ _market_c ┆ to_market ┆ rofit_to_ ┆ eturn_5 │\n", - "│ str ┆ --- ┆ --- ┆ --- ┆ ┆ ap ┆ _cap ┆ market_ca ┆ --- │\n", - "│ ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ p ┆ f64 │\n", - "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ --- ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ │\n", - "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", - "│ 000001.SZ ┆ 20240102 ┆ 0.5969 ┆ 1.41 ┆ … ┆ 2217.6093 ┆ 6486.3743 ┆ 2744.2180 ┆ -0.00325 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 09 ┆ 45 ┆ 84 ┆ 6 │\n", - "│ 000002.SZ ┆ 20240102 ┆ 0.8348 ┆ 1.71 ┆ … ┆ 1736.4093 ┆ 19.432701 ┆ 2329.7434 ┆ -0.02660 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 99 ┆ ┆ 1 ┆ 1 │\n", - "│ 000004.SZ ┆ 20240102 ┆ 2.2858 ┆ 0.78 ┆ … ┆ -168.7552 ┆ -184.4013 ┆ -192.7135 ┆ -0.01478 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 72 ┆ 85 ┆ 84 ┆ 9 │\n", - "│ 000005.SZ ┆ 20240102 ┆ 0.5958 ┆ 0.43 ┆ … ┆ -96.94997 ┆ -295.0388 ┆ -46.06373 ┆ -0.05395 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 7 ┆ 72 ┆ 6 ┆ │\n", - "│ 000006.SZ ┆ 20240102 ┆ 1.9404 ┆ 0.97 ┆ … ┆ -6.971845 ┆ -51.5536 ┆ -5.32671 ┆ -0.01345 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 4 │\n", - "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘\n", + "shape: (5, 32)\n", + "┌───────────┬────────────┬───────┬───────┬───┬─────────────┬─────────────┬────────────┬────────────┐\n", + "│ ts_code ┆ trade_date ┆ high ┆ close ┆ … ┆ market_cap_ ┆ turnover_ra ┆ return_5_r ┆ future_ret │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ rank ┆ nk ┆ ank ┆ urn_5 │\n", + "│ str ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", + "╞═══════════╪════════════╪═══════╪═══════╪═══╪═════════════╪═════════════╪════════════╪════════════╡\n", + "│ 600099.SH ┆ 20240102 ┆ 29.14 ┆ 28.8 ┆ … ┆ 0.097785 ┆ 0.779655 ┆ 0.904941 ┆ -0.039236 │\n", + "│ 600918.SH ┆ 20240102 ┆ 7.02 ┆ 6.94 ┆ … ┆ 0.951764 ┆ 0.04298 ┆ 0.163254 ┆ -0.027378 │\n", + "│ 600590.SH ┆ 20240102 ┆ 30.84 ┆ 30.09 ┆ … ┆ 0.532282 ┆ 0.789696 ┆ 0.920534 ┆ -0.072117 │\n", + "│ 000430.SZ ┆ 20240102 ┆ 30.76 ┆ 30.67 ┆ … ┆ 0.159722 ┆ 0.473724 ┆ 0.77926 ┆ 0.039126 │\n", + "│ 601881.SH ┆ 20240102 ┆ 13.63 ┆ 13.33 ┆ … ┆ 0.984234 ┆ 0.196134 ┆ 0.139395 ┆ -0.029257 │\n", + "└───────────┴────────────┴───────┴───────┴───┴─────────────┴─────────────┴────────────┴────────────┘\n", "\n", " 测试集前5行预览:\n", - "shape: (5, 53)\n", - "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", - "│ ts_code ┆ trade_dat ┆ turnover_ ┆ volume_ra ┆ … ┆ profit_to ┆ cashflow_ ┆ operate_p ┆ future_r │\n", - "│ --- ┆ e ┆ rate ┆ tio ┆ ┆ _market_c ┆ to_market ┆ rofit_to_ ┆ eturn_5 │\n", - "│ str ┆ --- ┆ --- ┆ --- ┆ ┆ ap ┆ _cap ┆ market_ca ┆ --- │\n", - "│ ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ p ┆ f64 │\n", - "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ --- ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ │\n", - "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", - "│ 000001.SZ ┆ 20250102 ┆ 0.9377 ┆ 1.38 ┆ … ┆ 1791.1304 ┆ 6183.5904 ┆ 2158.1117 ┆ -0.00262 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 08 ┆ 38 ┆ 45 ┆ 2 │\n", - "│ 000002.SZ ┆ 20250102 ┆ 1.2171 ┆ 1.06 ┆ … ┆ -1933.116 ┆ -1110.658 ┆ -1729.069 ┆ -0.02250 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 105 ┆ 303 ┆ 737 ┆ 9 │\n", - "│ 000004.SZ ┆ 20250102 ┆ 9.4831 ┆ 0.8 ┆ … ┆ -199.1144 ┆ -126.8907 ┆ -197.3308 ┆ -0.06489 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 31 ┆ 63 ┆ 47 ┆ 7 │\n", - "│ 000006.SZ ┆ 20250102 ┆ 2.2755 ┆ 0.79 ┆ … ┆ -646.1294 ┆ -325.4842 ┆ -637.5489 ┆ -0.04827 │\n", - "│ ┆ ┆ ┆ ┆ ┆ 33 ┆ 66 ┆ 17 ┆ 8 │\n", - "│ 000007.SZ ┆ 20250102 ┆ 1.9691 ┆ 1.05 ┆ … ┆ 6.740918 ┆ 108.91759 ┆ 22.556002 ┆ 0.015649 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ 8 ┆ ┆ │\n", - "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘\n" + "shape: (5, 32)\n", + "┌───────────┬────────────┬────────┬────────┬───┬────────────┬────────────┬────────────┬────────────┐\n", + "│ ts_code ┆ trade_date ┆ high ┆ close ┆ … ┆ market_cap ┆ turnover_r ┆ return_5_r ┆ future_ret │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ _rank ┆ ank ┆ ank ┆ urn_5 │\n", + "│ str ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", + "╞═══════════╪════════════╪════════╪════════╪═══╪════════════╪════════════╪════════════╪════════════╡\n", + "│ 605507.SH ┆ 20250102 ┆ 22.54 ┆ 21.55 ┆ … ┆ 0.75652 ┆ 0.281669 ┆ 0.449767 ┆ -0.058933 │\n", + "│ 600993.SH ┆ 20250102 ┆ 322.06 ┆ 312.13 ┆ … ┆ 0.75149 ┆ 0.235469 ┆ 0.626281 ┆ -0.024765 │\n", + "│ 600817.SH ┆ 20250102 ┆ 57.79 ┆ 55.83 ┆ … ┆ 0.568554 ┆ 0.162072 ┆ 0.442498 ┆ 0.007165 │\n", + "│ 603896.SH ┆ 20250102 ┆ 29.75 ┆ 28.56 ┆ … ┆ 0.411513 ┆ 0.283718 ┆ 0.504194 ┆ -0.044468 │\n", + "│ 600754.SH ┆ 20250102 ┆ 87.68 ┆ 85.56 ┆ … ┆ 0.91114 ┆ 0.477273 ┆ 0.825909 ┆ -0.062997 │\n", + "└───────────┴────────────┴────────┴────────┴───┴────────────┴────────────┴────────────┴────────────┘\n" ] } ], - "execution_count": 7 + "execution_count": 25 }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:20.933369Z", - "start_time": "2026-03-08T12:42:19.615723Z" + "end_time": "2026-03-08T15:07:55.786511Z", + "start_time": "2026-03-08T15:07:54.859705Z" } }, "source": [ @@ -731,45 +673,41 @@ " 处理后记录数: 2991506\n", "\n", " 训练集处理后前5行预览:\n", - "shape: (5, 53)\n", + "shape: (5, 32)\n", "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", - "│ ts_code ┆ trade_dat ┆ turnover_ ┆ volume_ra ┆ … ┆ profit_to ┆ cashflow_ ┆ operate_p ┆ future_r │\n", - "│ --- ┆ e ┆ rate ┆ tio ┆ ┆ _market_c ┆ to_market ┆ rofit_to_ ┆ eturn_5 │\n", - "│ str ┆ --- ┆ --- ┆ --- ┆ ┆ ap ┆ _cap ┆ market_ca ┆ --- │\n", - "│ ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ p ┆ f64 │\n", - "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ --- ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ │\n", + "│ ts_code ┆ trade_dat ┆ high ┆ close ┆ … ┆ market_ca ┆ turnover_ ┆ return_5_ ┆ future_r │\n", + "│ --- ┆ e ┆ --- ┆ --- ┆ ┆ p_rank ┆ rank ┆ rank ┆ eturn_5 │\n", + "│ str ┆ --- ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ ┆ str ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", - "│ 000001.SZ ┆ 20200102 ┆ -0.492311 ┆ 2.080178 ┆ … ┆ 1.441327 ┆ 2.715295 ┆ 1.645238 ┆ -0.00474 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 6 │\n", - "│ 000002.SZ ┆ 20200102 ┆ -0.40826 ┆ 0.478477 ┆ … ┆ 1.5879 ┆ -0.110121 ┆ 2.111027 ┆ -0.01105 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 7 │\n", - "│ 000004.SZ ┆ 20200102 ┆ -0.036785 ┆ -0.239526 ┆ … ┆ -0.651808 ┆ -0.221369 ┆ -0.574193 ┆ -0.00044 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 1 │\n", - "│ 000005.SZ ┆ 20200102 ┆ -0.42734 ┆ 0.552119 ┆ … ┆ -0.090517 ┆ 0.267338 ┆ -0.037305 ┆ 0.022337 │\n", - "│ 000006.SZ ┆ 20200102 ┆ -0.446951 ┆ 1.049198 ┆ … ┆ 1.207844 ┆ 0.563309 ┆ 1.370863 ┆ 0.012964 │\n", + "│ 002082.SZ ┆ 20200102 ┆ -0.303819 ┆ -0.30681 ┆ … ┆ -1.365199 ┆ 1.001092 ┆ null ┆ -0.02407 │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 9 │\n", + "│ 600387.SH ┆ 20200102 ┆ -0.334151 ┆ -0.332286 ┆ … ┆ -0.518195 ┆ 0.411746 ┆ null ┆ 0.058896 │\n", + "│ 000592.SZ ┆ 20200102 ┆ -0.370349 ┆ -0.369985 ┆ … ┆ 0.002754 ┆ -0.029081 ┆ null ┆ 0.128122 │\n", + "│ 002920.SZ ┆ 20200102 ┆ -0.289441 ┆ -0.287188 ┆ … ┆ 1.035415 ┆ 0.461883 ┆ null ┆ 0.129434 │\n", + "│ 600138.SH ┆ 20200102 ┆ -0.054852 ┆ -0.04954 ┆ … ┆ 0.58836 ┆ 0.394246 ┆ null ┆ 0.010992 │\n", "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘\n", "\n", " 训练集特征统计:\n", - " 特征数: 34\n", + " 特征数: 23\n", " 样本数: 2991506\n", " 缺失值统计:\n", - " ma5: 11541 (0.39%)\n", - " ma10: 25950 (0.87%)\n", - " ma20: 54850 (1.83%)\n", - " ma_ratio: 54850 (1.83%)\n", - " volatility_5: 11541 (0.39%)\n" + " ma_5: 11541 (0.39%)\n", + " ma_20: 54850 (1.83%)\n", + " ma_ratio_5_20: 54850 (1.83%)\n", + " bias_10: 25950 (0.87%)\n", + " high_low_ratio: 54850 (1.83%)\n" ] } ], - "execution_count": 8 + "execution_count": 26 }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:38.165178Z", - "start_time": "2026-03-08T12:42:20.939484Z" + "end_time": "2026-03-08T15:08:10.050651Z", + "start_time": "2026-03-08T15:07:55.791554Z" } }, "source": [ @@ -805,7 +743,7 @@ "------------------------------------------------------------\n", " 模型类型: LightGBM\n", " 训练样本数: 2991506\n", - " 特征数: 34\n", + " 特征数: 23\n", " 目标变量: future_return_5\n", "\n", " 目标变量统计:\n", @@ -820,14 +758,14 @@ ] } ], - "execution_count": 9 + "execution_count": 27 }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:38.355756Z", - "start_time": "2026-03-08T12:42:38.169740Z" + "end_time": "2026-03-08T15:08:10.136262Z", + "start_time": "2026-03-08T15:08:10.055577Z" } }, "source": [ @@ -867,14 +805,14 @@ ] } ], - "execution_count": 10 + "execution_count": 28 }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:39.677665Z", - "start_time": "2026-03-08T12:42:38.364128Z" + "end_time": "2026-03-08T15:08:11.299483Z", + "start_time": "2026-03-08T15:08:10.141988Z" } }, "source": [ @@ -909,14 +847,14 @@ " 预测完成!\n", "\n", " 预测结果统计:\n", - " 均值: -0.000501\n", - " 标准差: 0.008088\n", - " 最小值: -0.154524\n", - " 最大值: 0.096327\n" + " 均值: 0.000634\n", + " 标准差: 0.008134\n", + " 最小值: -0.156166\n", + " 最大值: 0.131927\n" ] } ], - "execution_count": 11 + "execution_count": 29 }, { "cell_type": "markdown", @@ -929,8 +867,8 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:42.772470Z", - "start_time": "2026-03-08T12:42:39.683522Z" + "end_time": "2026-03-08T15:08:15.854279Z", + "start_time": "2026-03-08T15:08:11.304814Z" } }, "source": [ @@ -1009,30 +947,30 @@ "重新训练模型以收集训练指标...\n", "Training until validation scores don't improve for 100 rounds\n", "Early stopping, best iteration is:\n", - "[31]\ttrain's l1: 0.0428788\tval's l1: 0.0539432\n", + "[164]\ttrain's l1: 0.0424587\tval's l1: 0.0537962\n", "训练完成,指标已收集\n", "\n", "评估指标: l1\n", "\n", "[早停信息]\n", " 配置的最大轮数: 1000\n", - " 实际训练轮数: 131\n", + " 实际训练轮数: 264\n", " 早停状态: 已触发(连续100轮验证指标未改善)\n", "\n", "最终指标:\n", - " 训练 l1: 0.042513\n", - " 验证 l1: 0.053961\n" + " 训练 l1: 0.042329\n", + " 验证 l1: 0.053824\n" ] } ], - "execution_count": 12 + "execution_count": 30 }, { "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:43.013683Z", - "start_time": "2026-03-08T12:42:42.777555Z" + "end_time": "2026-03-08T15:08:15.945008Z", + "start_time": "2026-03-08T15:08:15.859092Z" } }, "source": [ @@ -1080,7 +1018,7 @@ "text/plain": [ "
" ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdsRJREFUeJzt3Ql8E2X+x/Ff2vQAuY9y36DIIQgIggcqCCirIoiKKIcsnlziCSLIoqJ/BUFBkV1FdxcEu4onogjqqqCAoIgr3ohyFVBueuf/+j0wMUmTNm3TyTT9vH2NmcxMkknydEi++T3PuDwej0cAAAAAAAAAG8XZ+WAAAAAAAACAIpQCAAAAAACA7QilAAAAAAAAYDtCKQAAAAAAANiOUAoAAAAAAAC2I5QCAAAAAACA7QilAAAAAAAAYDtCKQAAAAAAANiOUAoAAAAAAAC2I5QCAMCBnn/+eXG5XN4pEho3buy9v/vvvz8i9xmr9PWxXit93ZzIt31oeylu24nGcy6Jdg4AAEoPQikAAIKENuFOH3zwAa8f5OGHH/ZrF2vXrg35qgwfPty7XWJiouzZsycmX8FYCZx8wzqdtm7dWuBtVqxYIWPHjpVu3bpJ+fLlC337UDwejyxbtkyuu+46Ofnkk6VSpUqSkJAgtWrVkh49esgjjzwiO3fuLPL9AwBgN7ftjwgAAAp0xhlnyKOPPhrRV+ree++VAwcOmHn9sozI0ZBAX9/c3Fxz/V//+pd07tw5z3bHjh2Tl19+2Xu9b9++UrNmTce3nZJSmva1MObOnSuvvfZaRO/z119/lWuuuUY+/vjjPOvS0tJk1apVZvrmm2/8KucAAHAyQikAAIKENuqPP/6Qhx56yHv9wgsvlF69evm9Xs2aNQv5+h08eNBUMhRF69atzRRJI0eOjOj94U/16tUz7eOdd94x1xcvXiwzZ840VSy+li5dKocOHfJeHzZsWMRfxpJoOyWlNO1rYWhFVP369aVTp06Sk5Mjb7zxRrHub/fu3dK9e3f5+eefvcuaNGkil156qamS0mPVp59+GjSwijR9PhkZGaYCDACA4qL7HgAAPqHNHXfc4Z0CQxytLvJdf8UVV0jDhg39uvI9++yz0qFDBylXrpyce+655nb6RXLcuHFyzjnnSIMGDeSkk06SpKQkE2RccsklQb+w5tf16bzzzvMu11Dj+++/l0GDBkmNGjUkOTnZPH6wKo1QY0rpfvs+1k8//SRPPfWUnHbaaeb+UlJS5K9//av54hvo6NGjMmHCBPM66LYaMMybN88856J0c9TtRowYYZ5DnTp1zOukX36bN29uur199dVXeW6jr4H1OPraaPelG264wXv7U089Vf7+978HfTy9v7/85S8mPNSpT58+smHDBikK3T/L3r175e23386zjVZQWfR11UoppdVC/fr1M12yqlWrZsKsKlWqmGqrBx98UI4cORKxbnNFec4apmk1mLYJDUG022GFChWkVatWMmrUKL8uaTqvj+v7eijffbLaX0H7qpVljz/+uJx11llStWpV87j6+BdffLG89NJLebYvTluOpEWLFpnKJn3d+vfvX+z70+OHbyB18803y3fffSezZs0yf3//93//J//973/l22+/NeFoqL+N/F4r3/cw8Hbbtm0z77++9to29TUt6O+7S5cu3vWBx9Ivv/xSrr/+ehPq67FS29Lpp59ufgQoTFsHAMQADwAACOrnn3/26D+V1jRlypR8159zzjl+19u1a2e2e+ONN/yWB5umTp3qd98LFizwW++re/fu3uWnnXaap2LFinnuz+Vyed577z2/2zVq1Cjoc3n//ff9bnv22WcH3cdzzz3X7/4yMzPzPGdruuSSS/yu62OE4/bbb8/3dUpMTPSsWLHC7zZDhw71rm/atKmnTp06QW/77LPP+t1u3bp1ngoVKuTZLjk52dOjRw/vdX3dwpGenu6pUqWK93ZXXHGF3/qdO3d64uPjvetvu+0277rq1avn+7zbtm3rOXTokN/9+a7X9hJO2ynqcx4wYEC++1epUiXPpk2bgv5dBJus9pffvurr1bp163zvR/crKyur2G05P7qvvrfV51cYgc+xsLffsWOH+Xu2bt++fXtPTk5OWLf1/dvQ44avwNfKd798b9eiRQtP7dq1/bZdunSp39/+DTfc4HffP/zwg9/2q1ev9q576qmnPG63O+R72qpVK/PeAwDKBrrvAQAQIR999JE0atRIBgwYYKp7dJwX5Xa7pX379qYrj44fpNUpWg3wySefyPvvv2+2mTZtmqkQ0uqpwti0aZOpILnttttMVYlWBGn3Gs0stPpGBz8uLO0CpLfTyrBXX33VW52klRjaRejMM88012fPnm2es0WrUS677DJTBfH6669LUWgVmXZTatu2rakY0iqKffv2yVtvvWXGysnMzJQxY8bI//73v6C318oYrYjRShK97dNPP21eF6XVJFqdofT10fnDhw+b61rNoeP1aDWZjvm0cuXKQu+7VmVdffXVplJMaQXc/v37TcWTVT2j702wrnva1ev888837UffT90/rYxZsmSJaSv6Hmh1yl133SVFVZznrM9Bu65q1ZlVsaRdyrQSSKtotKvq3XffbQbh1vdN29769evN/lt8x44KZ0yzwYMHy9dff+29rpWJWpmlg4ivWbPGLNP91uqayZMnF6stO5keI45nkMcNHTpU4uLs6+yglZhKK77atWsnv/zyi1SuXNlUwll////5z39kzpw53u6qL774ovf2LVu2lK5du5r51atXm8o6a+w1ff21Uk+7tL7wwgumwlD/tocMGSLvvvuubc8RABA9hFIAAESIjvGi3aCsEMKiX7p00u42GzduNGdb0y9v2gXps88+M13gsrOzzSDF2kWmMDRY0DBBu74oDWS0S49at25dkZ7H5Zdfbr7s631rtyHt8mSFKXqf1hf5f/zjH97baLChX/I1CLICF/2SWVhTp041X1g10NAQSkMd7TJ00UUXmetKL7VrlHaFDEbHc9JwTGm3Qn0OSrs26ZffihUrmtfdtyugjiemwaDS4Ee7FekX5MLSL+pWKKXj7mgXM+1KGNh1T98vDfEsX3zxhRnPTL+0a8ijQZQGQB07djQBitLxqooTShXnOet7nZWVZd5jDSk0hNIgTQOfBQsWmG20/eo2Grpq91btmucbSumycOnrofdn0f3TM8spDaC0K6wVTGk4OmnSpKBBTbht2cm2b9/ud11DHrvpMUXPJuhL26gGxBpy/v7776Z9arfQwFDKtxvnY4895g2ktFugHrus9+2qq67ynhxAg0cN3H3/RgAAsYlQCgCACLn11lvzBFJKx2rRqg8NHPLz22+/FfoxtQLBCqTUKaec4p0v6rg5WmVkje+jVS86VpVWxfjep34R1ZDHMnDgQG8gZX0RLUoopV9GdcwfDWYKeq2ChVJ169b1BlKBr4e1/xpKaejlS98fi4YqOtaXFbYUhn6p1moeq5JLgygNpTZv3myClmBf1PVL+j333GPCFa0Ey+85F0dxnvPChQtNqJNfUKchnK7XsbyKywqcfKuDLPHx8XLttdd6t9FARNuihnhFacvI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K1fKd999Z65/+eWX8vHHH8tFF11EG0OJCOe4pZfaZU+PfxbdXr8jaGUVUJTvAtrNT9sVbQyF4S7U1iiV9u7da8YzqFWrlt9yvb5ly5ao7RdiR25urhnnR7vAtGnTxizTD0OJiYnef5h8252uA8KxePFiUxau3fcC0cYQCT/99JPpWqVd3CdOnGja2pgxY8zxa+jQod7jVbB/QzmWIRz33HOPHDx40PwwEx8fbz6TPfjgg6Zbi3Uso40hksJpU3qpQbwvt9ttflzk2IbC0m6hOsbUoEGDzBhltDEUBqEUgIhUsmzevNn88gtEyq+//ipjx441Y13oCRqAkgrVtVLgoYceMte1UkqPZzoOi4ZSQHG99NJLsnDhQlm0aJG0bt1avvjiC/NDjg4MTBsDUNppz4grr7zSDK6vP/IAhUX3vTKgRo0a5pe5wLOe6fXatWtHbb8QG0aNGmUGx3z//felfv363uXatrTr6P79+/22p90hXNoFVE/G0KFDB/PrrU46YL4O3Krz+osvbQzFpWematWqld+yU089VbZt2+Y9llnHLo5lKIo777zTVEtdffXV5kxV1113nTlJg57FljaGkhDOcUsvA094lJ2dbc7Ix/cDFDaQ+uWXX8yPiFaVFG0MhUEoVQZoF4SOHTua8Qx8fxnW6127do3qvqH00l9DNJBaunSprFq1ypzq2pe2OT2blW+707Ny6Bc92h3C0aNHD/nqq69MVYE1aUWLdnmx5mljKC7tdqzHJl869k+jRo3MvB7b9Aua77FMu2LpmCscyxAOPUuVjtPjS38s1M9itDGUhHCOW3qpPxzqD0AW/Tyn7VLHngLCDaS+//57ee+996R69ep+62ljCBfd98oIHStDS8T1S1znzp1l1qxZ5jSfw4cPj/auoRR32dOuCK+99ppUrFjRO/6ADqRZrlw5czlixAjT9nR8Av3lZPTo0eYfqDPPPDPau49SQNuVNUaZRU9prR96rOW0MRSXVqzoQNTafU8/XK9du1bmz59vJqWDtmpXqwceeEBatGhhvuzpKbC161W/fv14A1CgSy65xIwhpSf60O57GzdulJkzZ8r1119PG0ORHT58WH744Qe/wc31Bxv9zKVtraDjllaE9unTR0aOHGm6K2vAoD82akWfbgfk18a0yviKK64w435qjwkdK8/6LqDrtSiCNoawFe5kfSjNnnzySU/Dhg09iYmJns6dO3s+/fTTaO8SSjE9fASbFixY4N3m2LFjnltuucVTtWpVT/ny5T2XX365Z+fOnVHdb5Ru3bt394wdO9Z7nTaGSHjjjTc8bdq0MadLb9mypWf+/Pl+6/X06vfdd5+nVq1aZpsePXp4vv32W158hOXgwYPmuKWfwZKTkz1Nmzb13HvvvZ6MjAzaGIrs/fffD/o5bOjQoWEft/bt2+cZNGiQp0KFCp5KlSp5hg8f7jl06BDvCgpsYz///HPI7wJ6O9oYCsOl/ws/wgIAAAAAAACKjzGlAAAAAAAAYDtCKQAAAAAAANiOUAoAAAAAAAC2I5QCAAAAAACA7QilAAAAAAAAYDtCKQAAAAAAANiOUAoAAAAAAAC2I5QCAAAAAACA7QilAAAAyqgPPvhAXC6XuQQAALAboRQAAECEPP/88ybkWb9+vbm+bNkyuf/++6P++j711FNm3wAAAJyEUAoAAKCEaCg1depUx4ZS5557rhw7dsxcAgAA2I1QCgAAoBTxeDwmSIqEuLg4SU5ONpcAAAB24xMIAABACRg2bJjMnTvXzGuXPmuy5ObmyqxZs6R169YmGKpVq5bceOON8scff/jdT+PGjeUvf/mLvPPOO9KpUycpV66cPPPMM2bdggUL5IILLpCUlBRJSkqSVq1aydNPP53n9l9//bV8+OGH3n0477zz8h1TKjU1VTp27Ggeq0aNGnLttdfK9u3b8zy/ChUqmOX9+vUz8zVr1pQ77rhDcnJyIvxqAgCAWOSO9g4AAADEIg2YduzYIStWrJB//etfQddrl7rhw4fLmDFj5Oeff5Y5c+bIxo0b5ZNPPpGEhATvtt9++60MGjTI3GbkyJFyyimnmOUaQGmodemll4rb7ZY33nhDbrnlFhN43XrrrWYbDb5Gjx5tQqN7773XLNMALBRrn8444wyZPn267N69W2bPnm32SfetSpUq3m01fOrdu7d06dJFHnvsMXnvvfdkxowZ0qxZM7n55psj+noCAIDY4/JoDTgAAACKzQp01q1bZ6qaRo0aZaqlAj9uffzxx3LOOefIwoUL5ZprrvEu12qoPn36+C3XSqdffvlFli9fbgIgX9qNT6uZfOntv//+e/nxxx+9y9q0aWMqngIrovT6+eefL++//76pnsrKypL69eubyit9DlrBpd566y1TrTV58mTvGFlaKfXCCy/I3/72N7nvvvu899mhQwfTHdAa7B0AACAUuu8BAADYTLvHVa5cWS688ELZu3evd9Iuc1rRpCGRryZNmuQJpJRvIHXgwAFzH927d5effvrJXC8sDZLS0tJMtZUVSKm+fftKy5YtTTgV6KabbvK7rmGbPj4AAEBB6L4HAABgM61k0tBIK5KC0WAoMJQKRrvUTZkyRdasWSNHjx71W6f3r8FXYWhFlrK6B/rSUEorvHxpcKXjSPmqWrVqnnGxAAAAgiGUAgAAsJmO+aSBlHbTCyYw6Ansoqe0e16PHj1MWDRz5kxp0KCBJCYmyrJly+Txxx83j1HS4uPjS/wxAABA7CKUAgAAKCG+Z9vzpQOB66DgZ511VtDAKRw6qHlGRoa8/vrr0rBhQ+/ywK5/+e1HoEaNGnkHVtez+vnSZdZ6AACASGBMKQAAgBJy0kknmcv9+/f7Lb/yyivNmeumTZuW5zbZ2dl5ts+vSsl3EHXtsrdgwYKg+xHOferg7FrBNW/ePBN4Wd5++2355ptvzNhSAAAAkUKlFAAAQAnRgcvVmDFjzEDlGiRdffXVZjDyG2+8UaZPny5ffPGF9OrVSxISEsxYUzoI+uzZs+WKK67I9771Ntpd75JLLjH3dfjwYfn73/9uQqWdO3fm2Y+nn35aHnjgAWnevLnZJrASSuk+PPLII+YMgrqPgwYNkt27d5v90bMA3nbbbRF+hQAAQFlGKAUAAFBC+vfvL6NHj5bFixfLv//9b1PVpKGU0mokDYueeeYZmThxorjdbhP8XHvttaZbX0F0MPL//Oc/MmnSJLnjjjukdu3acvPNN5vxqK6//nq/bSdPnmwGMf+///s/OXTokAmcgoVSatiwYVK+fHl5+OGH5e677zZVVpdffrkJq6pUqRKhVwYAAEDE5fGt+QYAAAAAAABswJhSAAAAAAAAsB2hFAAAAAAAAGxHKAUAAAAAAADbEUoBAAAAAADAdoRSAAAAAAAAsB2hFAAAAAAAAGxHKAUAAAAAAADbEUoBAAAAAADAdoRSAAAAAAAAsB2hFAAAAAAAAGxHKAUAAAAAAADbEUoBAAAAAADAdoRSAAAAAAAAELv9P+VlM78xhml2AAAAAElFTkSuQmCC" + "image/png": "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ny+7du2SKlWqSFxcXKjuFgAAAAAAIKK43W7JyMiQBg0aSHx84fVQhFIhooGUngobAAAAAAAAIr/88os5CQ6hVDnTCinrCU9NTY2oCq99+/ZJ7dq1i0wvgWhBm0csot0jFkVbu8/MzZRRK0aZ+b9f8ndJcaWEe5fgMNHW5oFg0O6d68iRI6Zwx8pKCkOlVIhYXfY0kIq0UCozM9PsMx9eiAW0ecQi2j1iUbS1+6TcJEmsmGjm9ZgIpRDtbR4IBu3e+Yob3ohQCgAAAHC45IRkeXbws555AACiAaEUAAAAEAG/NNepVCfcuwEAQEhR1wkAAAAApdS3b19JTk6WypUrm7FT2rdvL2lpaSELIz///PMS3SYnJ0cmTpwo1atXlxo1asgNN9wgubm5pd5+zJgxkpSUZI7PmtatW+dZr9vruDHabbBhw4YyefJkyc7ONut27NjhczudXC6XDB482HP7zz77TM466yxz+xYtWsjf//73Amfwmjt3rjRr1kwqVaokp5xyinzyySclek4AOBehFAAAAOBwufm58tzm58yk83CWBx54QI4ePWoG9n3wwQdl5MiR8vPPP4dlX+6991756KOP5L///a98/fXX8uGHH8p9991X6Pb33HNPsdtfd9115visqVevXj7rtm7dao79iy++MJM+B6pJkyY+tzt48KBUq1ZNrrjiCrP+0KFDcuGFF8pVV10lv/32myxbtsyEXLo/ljvuuEPeeOMNeeedd8x9rFq1ytwvgOhAKAUAAAA4nAZRK7auMBOhlHNpZdOgQYNM8PLtt996lm/atEnOPfdcU4nUqlUrefrpp33WnXHGGaZSqFatWnLRRReZ5T169DCXvXv3NhVGRQVL3hYvXiwzZsyQ+vXrm0lDnWefPTkeWSDPPfdcibb317ZtW1PBZFU16SDr33//fcBtX331VTMw9dChQ831tWvXmiqzCRMmSEJCgvTs2dOse+aZZ8x6DbHmzZtn9lGfN31+mzZtavYTQHQglAIAAACAENDA5V//+pecOHFCOnfubJbt2bNH/vCHP8i1114r+/btM8HMrFmzZPXq1Wa9dp3TIEqrhnbu3ClTp041yzds2OAJbrRCaPr06eb6H//4R7n//vsDPr7ex6+//up5bKXz2o3u8OHDBbbX6qRgttcudRqoadfEhx9+2BynN90fDc7q1KljKqW02ikQ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" }, "metadata": {}, "output_type": "display_data", @@ -1094,15 +1032,15 @@ "text": [ "\n", "[指标分析]\n", - " 最佳验证 l1: 0.053943\n", - " 最佳迭代轮数: 31\n", - " 早停建议: 如果验证指标连续10轮不下降,建议在第 31 轮停止训练\n", + " 最佳验证 l1: 0.053796\n", + " 最佳迭代轮数: 164\n", + " 早停建议: 如果验证指标连续10轮不下降,建议在第 164 轮停止训练\n", "\n", "[重要提醒] 验证集仅用于早停/调参,测试集完全独立于训练过程!\n" ] } ], - "execution_count": 13 + "execution_count": 31 }, { "cell_type": "markdown", @@ -1115,8 +1053,8 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:43.064939Z", - "start_time": "2026-03-08T12:42:43.030137Z" + "end_time": "2026-03-08T15:08:15.963026Z", + "start_time": "2026-03-08T15:08:15.951854Z" } }, "source": [ @@ -1155,59 +1093,45 @@ "训练结果\n", "================================================================================\n", "\n", - "结果数据形状: (771207, 54)\n", - "结果列: ['ts_code', 'trade_date', 'turnover_rate', 'volume_ratio', 'high', 'vol', 'close', 'low', 'total_mv', 'f_ann_date', 'total_profit', 'operate_profit', 'ebit', 'n_income', 'ebitda', 'money_cap', 'total_liab', 'n_cashflow_act', 'ma5', 'ma10', 'ma20', 'ma_ratio', 'volatility_5', 'volatility_20', 'vol_ratio', 'return_10', 'return_20', 'return_diff', 'vol_ma5', 'vol_ma20', 'market_cap_rank', 'high_low_ratio', 'turnover_rate_mean_5', 'bbi_ratio_factor', 'volume_change_rate', 'turnover_deviation', 'vol_std_5', 'std_return_5', 'std_return_90', 'cs_rank_volume_ratio', 'cs_rank_turnover_rate', 'n_income_rank', 'operate_profit_rank', 'total_profit_rank', 'ebit_rank', 'ebitda_rank', 'total_liab_rank', 'money_cap_rank', 'n_cashflow_act_rank', 'profit_to_market_cap', 'cashflow_to_market_cap', 'operate_profit_to_market_cap', 'future_return_5', 'prediction']\n", + "结果数据形状: (771207, 33)\n", + "结果列: ['ts_code', 'trade_date', 'high', 'close', 'low', 'vol', 'turnover_rate', 'total_mv', 'ma_5', 'ma_20', 'ma_ratio_5_20', 'bias_10', 'high_low_ratio', 'bbi_ratio', 'return_5', 'return_10', 'return_20', 'return_diff_5_10', 'volatility_5', 'volatility_20', 'volatility_ratio', 'std_return_5', 'std_return_20', 'volume_ratio_5_20', 'volume_change_rate', 'turnover_rate_mean_5', 'turnover_rate_std_20', 'turnover_deviation', 'market_cap_rank', 'turnover_rank', 'return_5_rank', 'future_return_5', 'prediction']\n", "\n", "结果前10行预览:\n", - "shape: (10, 54)\n", + "shape: (10, 33)\n", "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", - "│ ts_code ┆ trade_dat ┆ turnover_ ┆ volume_ra ┆ … ┆ cashflow_ ┆ operate_p ┆ future_re ┆ predicti │\n", - "│ --- ┆ e ┆ rate ┆ tio ┆ ┆ to_market ┆ rofit_to_ ┆ turn_5 ┆ on │\n", - "│ str ┆ --- ┆ --- ┆ --- ┆ ┆ _cap ┆ market_ca ┆ --- ┆ --- │\n", - "│ ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ p ┆ f64 ┆ f64 │\n", - "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ --- ┆ ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ ┆ │\n", + "│ ts_code ┆ trade_dat ┆ high ┆ close ┆ … ┆ turnover_ ┆ return_5_ ┆ future_re ┆ predicti │\n", + "│ --- ┆ e ┆ --- ┆ --- ┆ ┆ rank ┆ rank ┆ turn_5 ┆ on │\n", + "│ str ┆ --- ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ ┆ str ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", - "│ 000001.SZ ┆ 20250102 ┆ -0.442803 ┆ 0.60735 ┆ … ┆ 4.430923 ┆ 3.905767 ┆ -0.002622 ┆ -0.01380 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 2 │\n", - "│ 000002.SZ ┆ 20250102 ┆ -0.350092 ┆ 0.018219 ┆ … ┆ -1.401378 ┆ -3.606928 ┆ -0.022509 ┆ -0.01000 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 2 │\n", - "│ 000004.SZ ┆ 20250102 ┆ 2.392751 ┆ -0.46045 ┆ … ┆ -0.304204 ┆ -0.971788 ┆ -0.064897 ┆ -0.00486 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 4 │\n", - "│ 000006.SZ ┆ 20250102 ┆ 0.001109 ┆ -0.478861 ┆ … ┆ -0.525691 ┆ -1.986389 ┆ -0.048278 ┆ -0.00030 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 9 │\n", - "│ 000007.SZ ┆ 20250102 ┆ -0.100561 ┆ -0.000192 ┆ … ┆ -0.041212 ┆ -0.464999 ┆ 0.015649 ┆ 0.000112 │\n", - "│ 000008.SZ ┆ 20250102 ┆ 0.59965 ┆ -0.810247 ┆ … ┆ -0.360266 ┆ -1.189503 ┆ -0.066939 ┆ -0.01029 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 8 │\n", - "│ 000009.SZ ┆ 20250102 ┆ -0.443002 ┆ 1.178071 ┆ … ┆ 0.296618 ┆ 0.676674 ┆ -0.036045 ┆ -0.00890 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 9 │\n", - "│ 000010.SZ ┆ 20250102 ┆ 1.435875 ┆ 0.478477 ┆ … ┆ -0.214012 ┆ -1.156491 ┆ 0.092123 ┆ -0.00856 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 6 │\n", - "│ 000011.SZ ┆ 20250102 ┆ -0.487201 ┆ -0.073833 ┆ … ┆ -1.762282 ┆ -0.517669 ┆ -0.022094 ┆ -0.00446 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 2 │\n", - "│ 000012.SZ ┆ 20250102 ┆ -0.47635 ┆ 0.496888 ┆ … ┆ 0.793245 ┆ 0.662619 ┆ -0.029188 ┆ -0.01157 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 2 │\n", + "│ 605507.SH ┆ 20250102 ┆ -0.346007 ┆ -0.349849 ┆ … ┆ -0.578277 ┆ -0.191441 ┆ -0.058933 ┆ 0.006321 │\n", + "│ 600993.SH ┆ 20250102 ┆ 1.542811 ┆ 1.519556 ┆ … ┆ -0.74173 ┆ 0.436504 ┆ -0.024765 ┆ 0.002311 │\n", + "│ 600817.SH ┆ 20250102 ┆ -0.123715 ┆ -0.129313 ┆ … ┆ -1.001409 ┆ -0.217301 ┆ 0.007165 ┆ 0.011855 │\n", + "│ 603896.SH ┆ 20250102 ┆ -0.300539 ┆ -0.304751 ┆ … ┆ -0.571027 ┆ 0.002181 ┆ -0.044468 ┆ 0.013161 │\n", + "│ 600754.SH ┆ 20250102 ┆ 0.064776 ┆ 0.06195 ┆ … ┆ 0.113762 ┆ 1.146671 ┆ -0.062997 ┆ -0.00216 │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 3 │\n", + "│ 603008.SH ┆ 20250102 ┆ -0.311449 ┆ -0.312278 ┆ … ┆ -0.192712 ┆ -0.166907 ┆ -0.018255 ┆ 0.008841 │\n", + "│ 603650.SH ┆ 20250102 ┆ -0.251099 ┆ -0.263256 ┆ … ┆ -0.405596 ┆ -1.310734 ┆ -0.005427 ┆ 0.008721 │\n", + "│ 002236.SZ ┆ 20250102 ┆ 4.21561 ┆ 4.130212 ┆ … ┆ 0.279852 ┆ -0.810765 ┆ -0.0513 ┆ 0.007152 │\n", + "│ 603855.SH ┆ 20250102 ┆ -0.315863 ┆ -0.321092 ┆ … ┆ -0.960546 ┆ 0.258796 ┆ -0.044197 ┆ 0.007929 │\n", + "│ 002513.SZ ┆ 20250102 ┆ -0.401879 ┆ -0.403117 ┆ … ┆ 1.141935 ┆ -1.044172 ┆ -0.020347 ┆ 0.02149 │\n", "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘\n", "\n", "结果后5行预览:\n", - "shape: (5, 54)\n", + "shape: (5, 33)\n", "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", - "│ ts_code ┆ trade_dat ┆ turnover_ ┆ volume_ra ┆ … ┆ cashflow_ ┆ operate_p ┆ future_re ┆ predicti │\n", - "│ --- ┆ e ┆ rate ┆ tio ┆ ┆ to_market ┆ rofit_to_ ┆ turn_5 ┆ on │\n", - "│ str ┆ --- ┆ --- ┆ --- ┆ ┆ _cap ┆ market_ca ┆ --- ┆ --- │\n", - "│ ┆ str ┆ f64 ┆ f64 ┆ ┆ --- ┆ p ┆ f64 ┆ f64 │\n", - "│ ┆ ┆ ┆ ┆ ┆ f64 ┆ --- ┆ ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ f64 ┆ ┆ │\n", + "│ ts_code ┆ trade_dat ┆ high ┆ close ┆ … ┆ turnover_ ┆ return_5_ ┆ future_re ┆ predicti │\n", + "│ --- ┆ e ┆ --- ┆ --- ┆ ┆ rank ┆ rank ┆ turn_5 ┆ on │\n", + "│ str ┆ --- ┆ f64 ┆ f64 ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ ┆ str ┆ ┆ ┆ ┆ f64 ┆ f64 ┆ f64 ┆ f64 │\n", "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", - "│ 605588.SH ┆ 20251231 ┆ -0.287278 ┆ -0.478861 ┆ … ┆ 0.245664 ┆ -0.750859 ┆ null ┆ -0.00085 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 3 │\n", - "│ 605589.SH ┆ 20251231 ┆ -0.211755 ┆ -0.828658 ┆ … ┆ -0.316701 ┆ 0.328847 ┆ null ┆ -0.00538 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 4 │\n", - "│ 605598.SH ┆ 20251231 ┆ 0.754611 ┆ -0.552502 ┆ … ┆ -0.157841 ┆ -0.386306 ┆ null ┆ -0.00914 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 6 │\n", - "│ 605599.SH ┆ 20251231 ┆ -0.565809 ┆ 0.404836 ┆ … ┆ 1.377021 ┆ 1.078554 ┆ null ┆ -0.00074 │\n", - "│ 689009.SH ┆ 20251231 ┆ -0.486869 ┆ -0.570913 ┆ … ┆ 1.185366 ┆ 0.848817 ┆ null ┆ -0.00457 │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 1 │\n", + "│ 603062.SH ┆ 20251231 ┆ -0.155813 ┆ -0.151122 ┆ … ┆ 0.341316 ┆ 0.721984 ┆ null ┆ 0.001931 │\n", + "│ 600543.SH ┆ 20251231 ┆ -0.404843 ┆ -0.404275 ┆ … ┆ 0.52152 ┆ -1.221834 ┆ null ┆ 0.000149 │\n", + "│ 601199.SH ┆ 20251231 ┆ -0.312584 ┆ -0.310026 ┆ … ┆ -1.386182 ┆ -0.708964 ┆ null ┆ -0.00138 │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 7 │\n", + "│ 600597.SH ┆ 20251231 ┆ -0.351304 ┆ -0.349398 ┆ … ┆ -1.302562 ┆ -0.518432 ┆ null ┆ -0.00432 │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 7 │\n", + "│ 600365.SH ┆ 20251231 ┆ -0.433978 ┆ -0.433418 ┆ … ┆ -1.417944 ┆ -1.018578 ┆ null ┆ 0.002212 │\n", "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘\n", "\n", "每日预测样本数统计:\n", @@ -1222,21 +1146,21 @@ "│ --- ┆ --- ┆ --- ┆ --- │\n", "│ str ┆ str ┆ f64 ┆ f64 │\n", "╞═══════════╪════════════╪═════════════════╪════════════╡\n", - "│ 000001.SZ ┆ 20250102 ┆ -0.002622 ┆ -0.013802 │\n", - "│ 000002.SZ ┆ 20250102 ┆ -0.022509 ┆ -0.010002 │\n", - "│ 000004.SZ ┆ 20250102 ┆ -0.064897 ┆ -0.004864 │\n", - "│ 000006.SZ ┆ 20250102 ┆ -0.048278 ┆ -0.000309 │\n", - "│ 000007.SZ ┆ 20250102 ┆ 0.015649 ┆ 0.000112 │\n", - "│ 000008.SZ ┆ 20250102 ┆ -0.066939 ┆ -0.010298 │\n", - "│ 000009.SZ ┆ 20250102 ┆ -0.036045 ┆ -0.008909 │\n", - "│ 000010.SZ ┆ 20250102 ┆ 0.092123 ┆ -0.008566 │\n", - "│ 000011.SZ ┆ 20250102 ┆ -0.022094 ┆ -0.004462 │\n", - "│ 000012.SZ ┆ 20250102 ┆ -0.029188 ┆ -0.011572 │\n", + "│ 605507.SH ┆ 20250102 ┆ -0.058933 ┆ 0.006321 │\n", + "│ 600993.SH ┆ 20250102 ┆ -0.024765 ┆ 0.002311 │\n", + "│ 600817.SH ┆ 20250102 ┆ 0.007165 ┆ 0.011855 │\n", + "│ 603896.SH ┆ 20250102 ┆ -0.044468 ┆ 0.013161 │\n", + "│ 600754.SH ┆ 20250102 ┆ -0.062997 ┆ -0.002163 │\n", + "│ 603008.SH ┆ 20250102 ┆ -0.018255 ┆ 0.008841 │\n", + "│ 603650.SH ┆ 20250102 ┆ -0.005427 ┆ 0.008721 │\n", + "│ 002236.SZ ┆ 20250102 ┆ -0.0513 ┆ 0.007152 │\n", + "│ 603855.SH ┆ 20250102 ┆ -0.044197 ┆ 0.007929 │\n", + "│ 002513.SZ ┆ 20250102 ┆ -0.020347 ┆ 0.02149 │\n", "└───────────┴────────────┴─────────────────┴────────────┘\n" ] } ], - "execution_count": 14 + "execution_count": 32 }, { "cell_type": "markdown", @@ -1248,8 +1172,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:43.409508Z", - "start_time": "2026-03-08T12:42:43.073624Z" + "end_time": "2026-03-08T15:08:16.296512Z", + "start_time": "2026-03-08T15:08:15.970222Z" } }, "cell_type": "code", @@ -1321,22 +1245,22 @@ "│ --- ┆ --- ┆ --- │\n", "│ str ┆ f64 ┆ str │\n", "╞════════════╪══════════╪═══════════╡\n", - "│ 2025-01-02 ┆ 0.086703 ┆ 603007.SH │\n", - "│ 2025-01-02 ┆ 0.073642 ┆ 603559.SH │\n", - "│ 2025-01-02 ┆ 0.047455 ┆ 603959.SH │\n", - "│ 2025-01-02 ┆ 0.019551 ┆ 600530.SH │\n", - "│ 2025-01-02 ┆ 0.014435 ┆ 600608.SH │\n", + "│ 2025-01-02 ┆ 0.124602 ┆ 603007.SH │\n", + "│ 2025-01-02 ┆ 0.10774 ┆ 603559.SH │\n", + "│ 2025-01-02 ┆ 0.059728 ┆ 603959.SH │\n", + "│ 2025-01-02 ┆ 0.033194 ┆ 600804.SH │\n", + "│ 2025-01-02 ┆ 0.03074 ┆ 600421.SH │\n", "│ … ┆ … ┆ … │\n", - "│ 2025-01-06 ┆ 0.087354 ┆ 603007.SH │\n", - "│ 2025-01-06 ┆ 0.053317 ┆ 603959.SH │\n", - "│ 2025-01-06 ┆ 0.033367 ┆ 000573.SZ │\n", - "│ 2025-01-06 ┆ 0.019381 ┆ 603848.SH │\n", - "│ 2025-01-06 ┆ 0.017292 ┆ 603226.SH │\n", + "│ 2025-01-06 ┆ 0.131927 ┆ 603007.SH │\n", + "│ 2025-01-06 ┆ 0.067151 ┆ 603959.SH │\n", + "│ 2025-01-06 ┆ 0.049428 ┆ 603386.SH │\n", + "│ 2025-01-06 ┆ 0.048319 ┆ 002046.SZ │\n", + "│ 2025-01-06 ┆ 0.048007 ┆ 002759.SZ │\n", "└────────────┴──────────┴───────────┘\n" ] } ], - "execution_count": 15 + "execution_count": 33 }, { "cell_type": "markdown", @@ -1349,8 +1273,8 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:43.418164Z", - "start_time": "2026-03-08T12:42:43.414098Z" + "end_time": "2026-03-08T15:08:16.304039Z", + "start_time": "2026-03-08T15:08:16.300741Z" } }, "source": [ @@ -1370,40 +1294,29 @@ "text": [ "\n", "特征重要性:\n", - "ebitda_rank 14994.629439\n", - "bbi_ratio_factor 1948.020045\n", - "cs_rank_turnover_rate 1686.329153\n", - "std_return_90 1566.943976\n", - "return_10 1430.825613\n", - "std_return_5 1242.399894\n", - "ma_ratio 979.636333\n", - "high_low_ratio 932.793097\n", - "volume_change_rate 652.408669\n", - "vol_ratio 651.873589\n", - "cs_rank_volume_ratio 649.430382\n", - "vol_ma20 649.122400\n", - "turnover_rate_mean_5 615.645898\n", - "ma20 535.948738\n", - "return_20 452.979679\n", - "market_cap_rank 407.870511\n", - "return_diff 304.914024\n", - "ebit_rank 294.325396\n", - "profit_to_market_cap 287.904060\n", - "vol_std_5 243.944097\n", - "operate_profit_to_market_cap 232.366538\n", - "ma10 201.935446\n", - "volatility_20 169.372244\n", - "volatility_5 161.736089\n", - "ma5 111.549055\n", - "n_income_rank 79.050783\n", - "vol_ma5 73.284933\n", - "operate_profit_rank 57.328938\n", - "total_profit_rank 35.760864\n", - "n_cashflow_act_rank 34.917162\n", - "money_cap_rank 32.511166\n", - "total_liab_rank 24.127689\n", - "cashflow_to_market_cap 20.326702\n", - "turnover_deviation 0.000000\n", + "return_5_rank 2332.348582\n", + "return_5 1950.969372\n", + "turnover_rank 1887.661314\n", + "return_10 1342.515739\n", + "turnover_rate_std_20 1311.361422\n", + "ma_ratio_5_20 1123.527241\n", + "bbi_ratio 1071.855236\n", + "high_low_ratio 994.522432\n", + "bias_10 742.095194\n", + "std_return_5 741.347398\n", + "volume_change_rate 739.034219\n", + "return_20 597.878394\n", + "volume_ratio_5_20 595.380527\n", + "std_return_20 515.137529\n", + "market_cap_rank 466.798819\n", + "ma_20 418.790501\n", + "volatility_ratio 390.093624\n", + "return_diff_5_10 354.139443\n", + "turnover_rate_mean_5 351.775202\n", + "turnover_deviation 177.305289\n", + "ma_5 150.850527\n", + "volatility_5 148.218010\n", + "volatility_20 147.523706\n", "dtype: float64\n", "\n", "================================================================================\n", @@ -1412,7 +1325,7 @@ ] } ], - "execution_count": 16 + "execution_count": 34 }, { "cell_type": "markdown", @@ -1429,8 +1342,8 @@ "cell_type": "code", "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:43.429903Z", - "start_time": "2026-03-08T12:42:43.423547Z" + "end_time": "2026-03-08T15:08:16.315496Z", + "start_time": "2026-03-08T15:08:16.311483Z" } }, "source": [ @@ -1450,11 +1363,11 @@ "output_type": "stream", "text": [ "模型类型: \n", - "特征数量: 34\n" + "特征数量: 23\n" ] } ], - "execution_count": 17 + "execution_count": 35 }, { "cell_type": "markdown", @@ -1471,8 +1384,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2026-03-08T12:42:43.605795Z", - "start_time": "2026-03-08T12:42:43.439482Z" + "end_time": "2026-03-08T15:08:16.428810Z", + "start_time": "2026-03-08T15:08:16.321345Z" } }, "cell_type": "code", @@ -1522,7 +1435,7 @@ "text/plain": [ "
" ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9kAAAMWCAYAAADlCkWLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA8BVJREFUeJzs3Qm4TeX7//HbPCZDpoQyRSIyZcg8RaKEyhiVypCppFSIEEXfTM2iuVQUkhTxlSlDKEqIMpYpZD7/6/N8/2v/9tln7+Mcds5yzvt1XTvn7L322sOzdPms+36elSomJibGAAAAAADAeUt9/rsAAAAAAACEbAAAAAAAoohKNgAAAAAAUULIBgAAAAAgSgjZAAAAAABECSEbAAAAAIAoIWQDAAAAABAlhGwAAAAAAKKEkA0AAAAAQJQQsgEAAC6w7du3W8aMGe2///3vBXm9Tp062ZVXXnlOz3300UetSpUqUX9PAJBcEbIBAMnK5MmTLVWqVGFvCgv/hsWLF9ugQYPswIED5tfvY8WKFXaxmjBhgvscycmQIUNccK1evXqcxxYuXGitW7e2AgUKWPr06e3SSy912+o5u3fvvuDvtVevXrZmzRqbMWPGBX9tALgYpU3qNwAAwL9BgeSqq66Kdd+11177r4XswYMHu2ph9uzZ/5XXSMkUsi+77DL3/SYHe/futTfffNPdQj355JP29NNPW5EiRdzn1Z/Hjh2z77//3p577jn3nF9//TXRr/nKK6/YmTNnzun95suXz5o3b26jR4+2W2655Zz2AQApCSEbAJAs3XTTTVaxYkW7mB05csSyZMliKdXRo0ctc+bMlty89dZbljZtWmvWrFms+99//30XsFXFnjp1qqtiBxszZoy7nYt06dKd13vWe2rVqpVt3rzZBX8AQGS0iwMAUqTZs2fbjTfe6ELsJZdcYk2bNrX169fH2uaHH34IVBM1f1YVvc6dO9tff/0V2EZt4g8//LD7WZVzrzV969at7qafw7U66349N3g/uu/HH3+0u+66y3LkyGE1atSIFcwqVKhgmTJlspw5c9odd9zh5vWeC32mrFmz2rZt2+zmm292P6s1efz48e7xtWvXWt26dd13U7hwYXvnnXfCtqB/++231rVrV8uVK5dly5bNOnToYPv37w9biS5durRlyJDBLr/8cuvWrVuc1vratWu7TgNVbGvWrOnC9WOPPebmEWtcFixYEPhuta3s27fP+vXrZ2XKlHGfQe9BJ1fU2hxs/vz57nkffPCBDRs2zK644go3nvXq1bNNmzbFeb9Lly61Jk2auDHQd1C2bFl74YUXYm2zYcMGu/32291YaF86oZPQdupPP/3UtX/rPYdWsVWxf+211+IEbFHbePAxI9OnT3fHrr5Xfb9FixZ1Qf306dPxzsn2jk1Vp19++WX3PD2/UqVKtnz58jivXb9+/cDrAQDiRyUbAJAsHTx40P78889Y9ynAiKqEHTt2tEaNGtnIkSNdxXTixIku1K5atSoQRubOnesqd3fffbcL2Ap7CiT6c8mSJS6k3Hbbbfbzzz/bu+++66qM3mvkzp3btQUnlqqFxYsXt2eeecZiYmLcfQqGTzzxhKsm3nPPPW6/L774ogujer/n0qKuEKZAqn08++yz9vbbb1v37t1dqHz88cetbdu27rNNmjTJheeqVavGab/X9nptBb+NGze67/C3334LhFrRY2qlV0h74IEHAtspyGnRr+AKq05e6D3pBEK7du0sb968LlD36NHDBVK9L9H9orFRYNV3pvem+covvfSS1apVy52sUPAMNmLECEudOrUL5jo+9Ln1ORWqPRpznXjInz+/PfTQQ27cf/rpJ/v888/d76Lx11xqnZjQPH99ZwrwLVq0sGnTptmtt94a8Xs/efKk++z6LoLpGNJN4xsavuOjEx7avk+fPu7Pr7/+2oX1Q4cO2ahRo876fJ1A+fvvv93JEo2ZvhONu77b4LFRwFcQ15j17t07we8PAFKkGAAAkpE33nhDyTTsTf7++++Y7Nmzx9x7772xnrdr166YSy+9NNb9R48ejbP/d9991+3r22+/Ddw3atQod9+WLVtibavfdb/eUyjd/9RTTwV+18+6784774y13datW2PSpEkTM2zYsFj3r127NiZt2rRx7o/0fSxfvjxwX8eOHd19zzzzTOC+/fv3x2TKlCkmVapUMe+9917g/g0bNsR5r94+K1SoEHPixInA/c8++6y7f/r06e73PXv2xKRPnz6mYcOGMadPnw5sN27cOLfd66+/HrivVq1a7r5JkybF+QylS5d2j4c6duxYrP1633mGDBlihgwZErjvm2++cfsuVapUzPHjxwP3v/DCC+5+fZdy6tSpmKuuuiqmcOHC7vsIdubMmcDP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G0CCHDlyxK666qqw4VShuUWLFrZ582abPn26rVq1yoXx+vXru+eFGjt2rAvYoQ4fPuzCeaFChWzp0qW2aNEiu+SSS1zQPnnyZMT31rt3b/vss8/sww8/tAULFtiOHTvstttuCzz+/fffW548eeytt96y9evX2+OPP24DBgywcePGBbbZsmWLNW3a1OrUqWOrV6+2Xr162T333GNz5szhCAEAAECKkOQhe9euXdajRw8rUqSIq3ypStasWTObN2+eJScKJaoMXnnllS4YKSCFO2Ggx4JvJUuWTJL3i3+Hwm/btm1dmA6livWSJUts4sSJVqlSJbv66qvdz//884+9++67sbZVgH3uuefs9ddfj7OfDRs22L59+2zIkCFuH6VLl7annnrKVaV/++23sO/r4MGD9tprr9nzzz9vdevWtQoVKtgbb7xhixcvdu9JOnfu7E4O1KpVy/19bdeund1999328ccfB/YzadIkdxJB702V7u7du9vtt99uY8aMicK3BwAAAPhf2qR88a1bt1r16tVdS+uoUaOsTJkyrtKmqpfaVhUWkoujR4+6YNKqVStXMYxEgeirr74K/J427bkNUZXh8+xU2izn9Fz8O7aOaBrv48ePH3d/ZsyYMXBf6tSp3cknVaNVEfaOpbvuusvGjx9v+fLli7MfBWu1fCs0P/bYY3b69Gn3s0KvTvKEoyq1/u6pau7RCR5Vw7/77ju74YYbIobznDlzBn7XtsH7EFXQVdEGAAAAUoIkrWQ/+OCDrlq7bNkyV+UtUaKEC5l9+vQJVM+2bdtmzZs3d3NEs2XLZq1bt441TzRU7dq14/yDXlVDzXP1KGhoXmyHDh3cftWSO2PGDNu7d2/gtcqWLWsrVqwIPEfzSnUyQCcAFFa0jaqSO3fuTNBnVWVSJxLuuOMOF5oiUahWcPJul112WYL2j4ufF2rVgr1//347ceKEjRw50n7//fdYx5lO0lSrVs0dq+GoNVzzotXWrbnTOla/+OILmz17dsSTNuooSZ8+vTvGg+XNm9c9Fo6q3O+//77dd999sfaj54Tu49ChQ64iDwAAACR3SVbJVjur/uE/bNgwy5IlbsVV/9g/c+ZMIPRqjuipU6dchbtNmzYuRJwPta8+88wz9sQTT7if27dv74KLWmIVhvv37+9CuNq8vXmvqiCOHj3apk6d6iqMapft16+f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LHPmzFa4cGEbNWrUOX5bAAAAQMqQLEK2AoWCAHAhHTlyxK677jobP3582Md//fVXq1Gjhgu78+fPtx9++MEee+wxS5cuXWCbDh062MaNG23GjBm2du1au+2226x169a2atWqwDYK3Qrid999t61Zs8b++9//2l133RXveytRooSNGzfO7XPRokV25ZVXWsOGDQMBf8OGDXbmzBl76aWXbP369TZmzBibNGmSe3+e2bNnW9u2be3++++3devW2YQJE9x22i8AAAAAH4dsVfN69OhhRYoUsQwZMljBggVdhXDevHmWnLzyyit24403usqiV11ctmxZ4PGTJ09a//79rUyZMq4CqQqpQtiOHTuS9H0jvJtuusmGDh1qt956a9jHH3/8cWvSpIk9++yzVr58eVct1nGdPXv2wDaLFy92x37lypXd8T9w4ED3+Pfff+8eP3XqlD300EOugqywq/B8zTXXuCAeH4VwHV/aZ+nSpe3555+3Q4cOuaAvjRs3tjfeeMMFb22janu/fv3s448/Duxj6tSprmKu19U2TZs2tQEDBtjIkSMtJiaGwwIAAAAII60lMbWtVq9e3QULBQkFTIXNOXPmWLdu3VzFLblQNfPOO++0atWqWcaMGV1YUchRJbFAgQJ29OhRW7lypT3xxBOuQrp//34XsBSAVqxYkajXqjJ8np1Km+Vf+ywp2dYRTc+6jarEavF+5JFHrFGjRq4yrdbshx9+OFYlW8fC+++/7wKs/g6oPfvYsWNWu3Zt97iOhz/++MNSp07tgrpOSKlrQ39Xrr322gS9X7WAv/zyy65lXcdVJAcPHrScOXMGfj9+/LhrEw+m1vLff//dfvvtN1cdBwAAAOCzSvaDDz7o5rOqotuyZUtXqVPlrU+fPrZkyRK3zbZt26x58+aWNWtWy5Ytm6vi7d69O+I+FVB69eoV6z5V5Dp16hT4XQFBVUhVirVfzTdVy67aab3XKlu2bKxwO3nyZBeEdAKgVKlSbhtVBHfu3Jmgz/r222+7z6uQpBbiV1991YUxr2KvEDR37lz3+a6++mq74YYbXGuuqpr6DnDx2LNnjx0+fNhGjBjhjpEvv/zSVbw1tmq99ihU66RSrly5XBdH165d7ZNPPrFixYq5xzdv3hyYEqEq9+eff+66IHSM79u3L973oG11jOqEjtq8dWxddtllYbfdtGmT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2YMGDbJy5col9dtAMvTtt99as2bN7PLLL7dUqVLZp59+GuvxTp06ufuDb40bN46zn5kzZ1qVKlUsW7Zs1rZtW2vZsmWcbSZPnmxly5a1jBkzWp48eaxbt27xvrdff/3Vbr31VsudO7fbb+vWrW337t1htz1+/Lj7O6L3t3r16rDbbNq0yS655BLLnj37Wb4VAAAAAL4O2bt27bIePXpYkSJFLEOGDFawYEEXbObNm2fJySuvvGI33nij5ciRw93q169vy5Yti7VNTEyMPfnkk5Y/f37LlCmT2+aXX35Jsvec0h05csSuu+46Gz9+fMRtFKp37twZuL377ruxHp82bZq1b9/e7r77bluxYoWNGDHC7rjjjljbPP/88/b444/bo48+auvXr7evvvrKGjVqFO/7atiwoQvNX3/9tf33v/+1EydOuL83Z86cibP9I4884k4URHLy5Em788473fEJAAAA4NyltSS2detWq169uquejRo1ysqUKeP+wT9nzhxXyduwYYMlF/Pnz3dBplq1aq5aOXLkSBeUFKoKFCjgtnn22WftP//5j7355pt21VVX2RNPPOHC1o8//uiek1BVhs+zU2mz/IufJvnbOqKp3XTTTe4WH50YypcvX9jHTp06ZQ899JA7trt06eKObVWMmzRpEthm//79NnDgQPvss8+sXr16gftV1Y5EoVp/d1atWuWq2KJjRidvFLp1csYze/Zs+/LLL13Y18/h6PVLlizpXn/x4sXxfl4AAAAAPq5kP/jgg64ap4quWmhLlChhpUuXtj59+tiSJUvcNtu2bbPmzZtb1qxZz9oWK7Vr17ZevXrFuq9Fixautddz5ZVX2tChQ61Dhw5uv4ULF7YZM2bY3r17A6+lkKPKY3A7r04G6ARAqVKl3DZeFTMh3n77bfd51barQPPqq6+6qqNXsVcVe+zYsS7w6D3o9adMmWI7duyI06YMf508UXv31VdfbQ888ID99ddfgcdWrlxpf/zxh6VOndrKly9vhQoVsiFDhti6desC28ydO9cdB9pOx9UVV1zhjvHt27dHfE21f+vvjQK+Rydh9DqLFi0K3Ke/J/fee69NnTrVMmfOHHZfCuUffvhhvNV6AAAAABdByN63b5998cUXrmKdJUvcqqsCrcKHAqe2XbBggQskmzdvtjZt2pz3648ZM8ZV0VUNbNq0qWvp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mtnll19uqVKlsk8//TTid3L//fe7bcaOHRvr/ltuucUKFSpkGTNmtPz581v79u1tx44dsbb54YcfrE6dOtaqVSsrUqSIPfvss2f97pcvX2716tWz7NmzW44cOaxRo0a2Zs2awOPz58+35s2bu9fMkiWLlStXzt5+++04+zlw4IB169bNbZchQwYrUaKEzZo1K8WPPQAAABBtKSJkDxo0yIUPIJwjR47YddddZ+PHj4/3C/rkk09syZIlLoyHUnj+4IMPbOPGjTZt2jT79ddf7fbbbw88fujQIWvYsKEL4s8995wNHz7cHZcvv/xyxNc7fPiwNW7c2D1n6dKltmjRIrvkkktc0D558qTbZvHixVa2bFn3mgrxd999t3Xo0ME+//zzwH5OnDhhDRo0sK1bt9pHH33k3uMrr7xiBQoU4IAAAAAAoiytXQR27dplw4YNs5kzZ9off/xhefLkcaG5V69ersqXXNSuXdsWLFgQ5/4mTZq4z45/x0033eRu8dFx16NHD5szZ441bdo0zuO9e/cO/Fy4cGF79NFHrUWLFi4Mp0uXzlWXFXYVbr/66is3puvWrbPnn3/e7rvvvrCvuWHDBtu3b58NGTLEChYs6O576qmnXKj+7bffrFixYvbYY4/Fes5DDz1kX375pX388cd28803u/tef/11tx8Fcr0XufLKK8/hmwIAAABw0YdsVd+qV6/u2mVHjRplZcqUccFFYUftrwoiyYWCkYKY56+//nIVVrUXJ1aV4fPsVNosUX6Hyc/WEXEDc6gzZ8649u+HH37YSpcufdbtFWgVqqtVqxYItd99953VrFnT0qdPH9hOFemRI0fa/v37XSt4qKuvvtpy5cplr732mgvTp0+fdj+XKlUq3pB88OBBt41nxowZVrVqVff3Zfr06ZY7d2676667rH///pYmTZqzfh4AAAAAyahd/MEHH3RzYJctW2YtW7Z0c0kVdPr06eNad2Xbtm1uXmrWrFktW7Zs1rp1a9u9e3e8FWNVwYOp6tipU6fA7woxQ4cOda232q+qkwore/fuDbyWKoorVqwIPGfy5MnuZIBOACjkaBu1++7cuTNBnzVnzpyWL1++wG3u3LmWOXPmcwrZiB4F4bRp01rPnj3j3U6hVfOiFYx1TCrQBndj5M2bN9b23u96LBy1hmvO9VtvvWWZMmVyx9MXX3xhs2fP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QKzHtO/rr7/eMmTIYMWKFbPJkyfHef748ePtyiuvtIwZM1qVKlVs2bJlCX5tAAAAAMkwZO/atct69OhhRYoUcWGiYMGCLhjNmzfPkpP169dby5YtXSBSoBo7dmycbf7++2/r1auXFS5c2DJlymTVqlWz5cuXJ8n7TQ6OHDli1113nQuioY4ePWorV660J554wv358ccf28aNG+2WW24Ju69HHnnEBfFQixcvtrJly9q0adPshx9+sLvvvtuF9c8//zxB77FLly7u+aG2bNliTZs2tTp16rhQr+PinnvusTlz5gS2ef/9961Pnz721FNPuc+gz9qoUSPbs2dPgl4bAAAAQPSltSS0detWq169umXPnt1GjRrlqoqqMCpIdOvWzTZs2GDJhUKdTiS0atXKevfuHXYbhah169bZ1KlTXaB76623rH79+vbjjz9agQIFEvV6VYbPs1Nps1hKtXVEU7vpppvcLZxLL73U5s6dG+u+cePGWeXKlW3btm1WqFChwP2zZ8+2L7/80gVp/Rzssccei/X7Qw895LZVaL/55pvjfY8TJ0501esnn3wyzn4nTZpkV111lT333HPu91KlStmiRYtszJgxLkjL888/b/fee68L9t5zZs6caa+//ro9+uijCfiWAAAAACSrSvaDDz7oqrpqcVWVt0SJEla6dGlXnVuyZInbRoFH7bhZs2a1bNmyWevWrW337t0R91m7dm1X9QvWokUL69SpU+B3VZOHDh3qKo7aryrHM2bMsL179wZeS9XFFStWBJ6jVl2dDNAJAAUebdO4cWPbuXNngj5rpUqV3ImEO+64w1XsQ/3zzz8uxD377LNWs2ZN1x6sVnj9qTCGf9/Bgwfd8ahx9uhYU5DViY/MmTMneD85c+aMdxudOBkyZIhNmTLFUqeO+9fwu+++cydYgilc6345ceKEff/997G20X70u7cNAAAAgBQUsvft22dffPGFq1hrLmsoBZ0zZ8640KttFyxY4CqPmzdvtjZt2pz366siqCr6qlWrXFtu+/btXehu166da70tWrSo+z0mJiZWNXr06NEucGm+r04A9OvXz6Lh1KlTdvr0aTe3NpjaxlXBxL/r2LFjbo72nXfe6U7miMZeJ2fuv/9+q1ixYoL288EHH7gWf6+6HI66NXS86aRLcMU8dBpF3rx5Y92n3w8dOuROyPz555/u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LV261L744gv3fXbq1Cne1z5y5IjVqFHDRo4cGfZx7Ve30aNH27p162zy5Mlu3126dAls8/3331uePHnsrbfecq/5+OOP24ABA2zcuHHn/J0AAAAASL7SJuWLb9261QUwVSdHjRrlKpwnT560OXPmWLdu3WzDhg2WXBw9etSdSGjVqpX17t07Yii87rrrrHPnznbbbbed1+tVGT7PTqXNYklp64imLuDqxMkbb7wRuP+qq64KW+3WyRaNfdOmTWM99vnnn7uQPn78eEud+n/nhSZNmmRly5a1TZs2ufAdTvv27f/3PrZuDfv4tddea9OmTQv8XrRoURs2bJirup86dcrSpk3rxiKYxvC7775zVfLu3bsn6vsAAAAAkPwlaSX7wQcfdBXbZcuWuSpviRIlrHTp0tanTx9X0ZRt27ZZ8+bNLWvWrJYtWzZr3bq17d69O+I+a9eubb169Yp1X4sWLWJVPVVNHjp0qHXo0MHtt3DhwjZjxgzbu3dv4LUU4IJbmlXl1MkAhUC1DGubxo0b286dOxP0WStVquROJNxxxx2uYh/OTTfd5N7XrbfeasmFvteKFSu6kwuqCJcvX95eeeWVWNucOXPGBeKHH37YjX+o48ePW/r06QMBW9S6LYsWLYrq+1WruI4zBez4tsmZM2dUXxcAAABA8pBkIVvzYdWaq4p1lixxK64KtApfCr3adsGCBTZ37lzbvHmztWnT5rxff8yYMa6KvmrVKlc5VchT6FYVU/N/VdXU7zExMbGq0Wotnjp1qmvt1gmAfv36nfd7Sc40XhMnTrTixYu7ExQPPPCAm/f85ptvBrZRtVuhVveHU7duXTetQCcpTpw44VrQH330UfdYQk9yJMSff/5pTz/9tJvvHcnixYvt/fffj3cbAAAAAClXkrWLq81XAbZkyZIRt9G87LVr19qWLVtcy7FMmTLFVTuXL1/uqsPnqkmTJta1a1f385NPPumCoPaniqv079/fqlat6qrm+fLlc/eplV1tygrgonbhIUOGWFJSlVc3z6FDh9yfGVLHWJo0/3eCICno+9KJkgoVKtjgwYMDLdo//PCD+77vuusud0JDC4lprrVatD2nT592zxd1OLz22mv2yCOPuPnQadKkcd993rx53THkbRff+/D+jLStvjcdE+pS0LzrcNtp3rZO+gwcONDq1Klz1tc923uB/zA+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yAYAAAAAIEoI2QAAAAAARAkhGwAAAACAKCFkAwAAAAAQJYRsAAAAAACihJANAAAAAECUELIBAAAAAIgSQjYAAAAAAFFCyAYAAAAAIEoI2QAAAAAARAkhGwAAAACAKCFkAwAAAAAQJYRsAAAAAACihJANAAAAAECUELIRFYMGDbJUqVLFupUsWTLweNeuXa1o0aKWKVMmy507tzVv3tw2bNgQax+hz9ftvffei/d1V65caQ0aNLDs2bNbrly57L777rPDhw+H3favv/6yK664wu33wIEDsR4bP368lSpVyr2/q6++2qZMmXJe3wcAAACAlCl1SgmA5cqVS+q3keyVLl3adu7cGbgtWrQo8FiFChXsjTfesJ9++snmzJljMTEx1rBhQzt9+nSsfWib4H20aNEi4uvt2LHD6tevb8WKFbOlS5faF198YevXr7dOnTqF3b5Lly5WtmzZOPdPnDjRBgwY4I4TPX/w4MHWrVs3++yzz87r+wAAAACQ8lwUIXvXrl3Wo0cPK1KkiGXIkMEKFixozZo1s3nz5lly8sorr9iNN95oOXLkcDcFyGXLltnFIm3atJYvX77A7bLLLgs8pgpzzZo17corr7Trr7/ehg4datu3b7etW7fG2ocq0sH7yJgxY8TX+/zzzy1dunSuCq3qc6VKlWzSpEk2bdo027RpU5wgrep1v3794uxn6tSprtLepk0bd4zdcccd7v2OHDkyKt8LAAAAgJQjrfmcQlj16tVd+Bo1apSVKVPGTp486aqhqjaGthxfzObPn2933nmnVatWzYVLhTxVe1VdLVCgQKL2VWX4PDuVNotdCFtHNHV//vLLL3b55Ze79161alUbPny4FSpUKM72R44ccRXrq666yp0wCaYxveeee1zYvf/+++3uu+927d3hHD9+3NKnT2+pU//fuSK1e4uq6Kpwy48//mhDhgxx1e7NmzeH3U9omNd+dIJDx5qCPAAAAAAki0r2gw8+6EKWAk/Lli2tRIkSri25T58+tmTJErfNtm3b3BzfrFmzWrZs2ax169a2e/fuiPusXbu29erVK9Z9aksObjNWxVXV1g4dOrj9Fi5c2GbMmGF79+4NvJZaj1esWBF4zuTJk93JAJ0A0PxebdO4cWPX9pwQb7/9tvu8am3XfOZXX33Vzpw5c1FU7KtUqeI+v1q2VTXesmWLq8r//fffgW0mTJjgvhPdZs+ebXPnznUh2aMg/MEHH7j7Ndb6Ll588cWIr1m3bl3X5aCTLydOnLD9+/fbo48+6h7zvnMFaJ240DbhAr80atTIfdfff/+9a2PXmOp3Bew///wzit8SAAAAgOTO15Xsffv2udA2bNgwy5IlblVWgVYh1Au9CxYssFOnTrlqqFp/VRk+H2PGjLFnnnnGnnjiCfdz+/btXZW5c+fOLrT179/fhXBVmr1q69GjR2306NGuBVkV1nbt2rkWZQXoxNK+FPRy5swZcRuFSN08hw4dcn9mSB1jadLE2IWg96jWdo9OMKglXJXkd99911WjRSc/dIJDwfj555+3Vq1auTHzqsheQJZrr73WfRZ9zw888EDY19UJl9dee80eeeQRN6c6TZo01r17d8ubN68Ly3pfGiO1kut40O86Prz3rJv3uprffcMNN7jn6fkat+eee87NGfe2i9Z3Ffwn/IXx8TfGx98YH39jfPyPMfI3xsffTl6Af2MnZt++DtmaV6vQE7xKdShVedeuXesqp17rsVaGVrV7+fLlbp7uuWrSpImbqytPPvmkq9BqfwqHogCntmhVzTV/2PvyNS9YK2mLQp8qtOdC+1f7dXCADaWWbC3UFWpg+TOWOXPsRcX+LbNmzQp7f548eezLL790oTWUugYUZLXYmOZqh6OTFL///rtNnz49Ysv2pZdeai+99JKbb635+jrZMXbsWPe73peeq04HzdMOpvHSOKrKLbfeequb56/naT683rdaxnUMBbejR4uq9fAvxsffGB9/Y3z8jfHxP8bI3xiflDs+R48eTR4hWwH7bLRatcJ18Nzea665xlW59dj5hOzglai9oKg54aH37dmzJxCyM2fOHAjYkj9/fvd4Yo0YMcJdvkrV+PgW/1IFV63zHlV/9V0MXZXaTqVLYxfCukGN4tyny2jpklmaT6+TFaFUfVd41ViFe1zWrFnjAq86FRJKLev6vh5++GF3DKiK/c8//wQeV0v4vffe675XzfvWiYBwFNRvueUWu/nmmy2adBJGf/l12THmevsP4+NvjI+/MT7+xvj4H2Pkb4yPv528AP/G9jqGL/qQXbx4cVeZjPbiZgp3oQE+XPk/eIC8dvBw96llPdxzvG0ScrIgmNrNFbK/+uqrsJecCqbqrW6hjp9JZadOh18wLNr0mdUSr0qw5q6r9fqpp55y7duqVmsV8ffff98t4qZrZKs6rc+nSrGeo+frclnqCFDLtkKy/pJo4Tft1/tONS9f7fnqXvAWghs3bpxr4dd0AT1H4Vr71utIaBfEwYMHAydLFMLl559/dvvWvHLN61Yru6YAqCPi3/pLqv0Ssv2L8fE3xsffGB9/Y3z8jzHyN8Yn5Y5PukTs19chW3ORtSiVLtHUs2fPOPOy1dqr+b8Kcbp51WytJq3HVCUNRwEseDEyzbtdt26d1alTx5Las88+6+aga/G0ihUrnvN+lg6oZ7ly5bILRcFZrdeqXuv7rVGjhluYTj/rBMbChQtddVghVh0AahFfvHhxoJLsXYqrd+/e7qSE5nMr7KrqHNyisXHjxlgnRBSOFehVOVegVuu45s4nhsZf86+1b70PHQd6b1r8DgAAAAASw9chWxS81HJcuXJlN7dZlV0tXqWqpeZIK1CrKtm2bVsX4vSYVqWuVatWxJCqVanVYj1z5kzX2q0wp1Ce1FS51dzvd955xwU8LRAm3orcfqbW9kg0rzzSvG2PVmHXLT5aNC20K0DV5sQItw+dqFm1alWi9gMAAAAAF+UlvDRvduXKla662LdvX7fqtHrt1TKskK12bC1upbm7qo5qkTA9R+3JkWh18I4dO7rWY4Vxbe+HKrY+jy5Fdfvtt7u53N5N7eMAAAAAAP/zfSVbFDQ191a3cHT9YwXtSLSCtW4etQTrms26RbJ169Y494VWQFVtDr5PK2YHX2vbu/52Qudkh3tNAAAAAMDFw/eVbAAAAAAALhaE7AvIm1sd7qaFwQAAAAAAF7eLol08uVi9enXEx7xLUgEAAAAALl6E7AtIl6UCAAAAACRftIsDAAAAABAlhGwAAAAAAKKEkA0AAAAAQJQQsgEAAAAAiBJCNgAAAAAAUULIBgAAAAAgSgjZAAAAAABECSEbAAAAAIAoIWQDAAAAABAlhGwAAAAAAKKEkA0AAAAAQJQQsgEAAAAAiBJCNgAAAAAAUULIBgAAAAAgSgjZAAAAAABECSEbAAAAAIAoIWTjvI0YMcJSpUplvXr1CtxXu3Ztd1/w7f777w88vmbNGrvzzjutYMGClilTJitVqpS98MILZ32tlStXWoMGDSx79uyWK1cuu+++++zw4cOxtlm+fLnVq1fPbZMjRw5r1KiRe71gP/zwg914442WMWNG9x6effZZjgQAAAAA5y1FhOxBgwZZuXLlkvptJEsKtC+99JKVLVs2zmP33nuv7dy5M3ALDrLff/+95cmTx9566y1bv369Pf744zZgwAAbN25cxNfasWOH1a9f34oVK2ZLly61L774wj23U6dOgW0UuBs3bmyFChVy2yxatMguueQSF7RPnjzptjl06JA1bNjQChcu7N7HqFGj3DHy8ssvR/37AQAAAJCyXBQhe9euXdajRw8rUqSIZciQwVUemzVrZvPmzbPkZuzYsXb11Ve76q4+Z+/eve3YsWPmRwq0bdu2tVdeecVVjENlzpzZ8uXLF7hly5Yt8Fjnzp1d5bpWrVpuXNu1a2d33323ffzxxxFf7/PPP7d06dLZ+PHj3XdUqVIlmzRpkk2bNs02bdrkttmwYYPt27fPhgwZ4rYpXbq0PfXUU7Z792777bff3DZvv/22nThxwl5//XX3+B133GE9e/a0559//l/5ngAAAACkHGnN57Zu3WrVq1d3rb+qOJYpU8ZVJOfMmWPdunVzoSq5eOedd+zRRx914a9atWr2888/uyqtWq0TGwCrDJ9np9Jm+Vfe59YRTd2f+v6bNm3qqstDhw6Ns53CrCrVCtg6KfLEE0+44B3JwYMHLWfOnBEfP378uKVPn95Sp/6/c0M6GSGqWKvCrWCtNvLXXnvNHnvsMTt9+rT7We3oV155pdv2u+++s5o1a7p9eVTpHjlypO3fvz/sCQMAAAAASBaV7AcffNCFzGXLllnLli2tRIkSrvrYp08fW7Jkidtm27Zt1rx5c8uaNaurlrZu3dpVLiPRfOHg+cPSokWLWG3HCmQKjh06dHD7VWvxjBkzbO/evYHXUov0ihUrAs+ZPHmyOxmgEwAKddpGrctqlU6IxYsXuxMKd911l3t9tTRr3rI+u9+89957bn708OHDwz6uz6CA/c0337g28KlTp7pqdXyf/f3333dzrCOpW7eu62rQyRZVohWIdVJCvO9YreHz5893r60ArjFQW/ns2bMtbdr/nVPSPvLmzRtr397vegwAAAAAkmUlW22/CkjDhg2zLFniVmUVaM+cORMIvQsWLLBTp065CmubNm1c2DofY8aMsWeeecZVYPVz+/btXYVZrc4Kev3793chXPOCdSJAjh49aqNHj3ahUhVXBct+/fq5qu7ZaN8KhwrVlStXts2bN9usWbPc68ZX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AACECUE2AAAAAABhQpANAAAAAECYEGQDAAAAABAmBNkAAAAAAIQJQTYAAAAAAGFCkA0AAAAAQJgQZAMAAAAAECYE2QAAAAAAhAlBNgAAAAAAYUKQDQAAAABAmBBkAwAAAAAQJgTZAAAAAACECUE2AAAAAABhQpCNWI0YMcJq1qxpWbJksbx581qrVq1s+/bt0bb5+eefrXXr1pYnTx7LmjWrtW3b1g4ePBjr/k6dOmVVq1a1FClS2Pr16+O96g8++KCVLFnSMmTI4PbdsmVL++GHH4LPb9iwwdq3b2+FCxd225QvX95effXVaPtYvHixO1bM24EDB2hxAAAAAFfMVR9kDx061AVvCK8lS5bYww8/bCtWrLD58+fbmTNn7Pbbb7e//vrLPa+vuq/AddGiRfbtt9/a6dOnrUWLFnb+/PkL9vfEE09YgQIFEnTs6tWr28SJE23btm02b948CwQC7ljnzp1zz69Zs8YF/h999JFt2bLFnn76aRs0aJC9/vrrF+xLHQP79+8P3vQ6AAAAALhSUluEKbM4fPhwmz17tu3bt88FQQqaH330UWvYsKElF++884598MEHtnnz5mAg+eKLL1qtWrWibafAcuDAgS7IPXv2rFWoUME+++wzK1KkSJKe79y5c6PdnzRpkmsbBbj169d3QfXu3btt3bp1Lost77//vuXIkcMF3Y0aNQq+9quvvrL//d//de9D31/MAw88EPy+WLFiNmzYMLv++uvd8ZTh7tatW7TtS5QoYcuXL7fp06db7969oz2nc86ePfslXwcAAAAAuGqCbAVN9erVc0HQyy+/bJUrV3YZU2UvlUUNLRG+2ql8WSXOdevWtfTp09u///1vl51VJrZgwYLB8uubbrrJunfvbs8995wLXvW8tk+s2iMW2tnUmRL9ut0jm8f6+PHjx93XnDlzBsu/lcVOly5dcBudZ8qUKW3ZsmXBIFvl4z169LAZM2ZYxowZE30+ypgrq128eHFXHh4XnZ93bqHUYaNzrVSpkqt60M8bAAAAACTLcvFevXq5QG3VqlV29913W5kyZaxixYrWr18/V6Yse/bscWNyM2fOfNFxv3LLLbe4LHgojSfu2rXrBdnRzp07u/0WLVrUZs6cab///nvwWFWqVLHVq1dHy+SqM0AdABoDrG2aNm3qSpATYvLkye79KugrV66c/ec//3Fl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AAAAQJgQZAMAAAAAECYE2QAAAAAAhMlVH2QPHTrUqlatGunTSFZGjBhhNWvWtCxZsljevHmtVatWtn379mjbHDhwwDp16mT58+e3TJky2Q033GCfffZZ8PnFixdbihQpYr19//33cR77559/ttatW1uePHksa9as1rZtWzt48GC0bY4cOWIdOnRwz2fPnt26d+9uJ0+ejHV/O3bscO9D2wEAAABAsg+yFaz16dPHSpQoYenSpbPChQtbixYtbOHChZacTJ8+3WrUqOGCPQWl6hj48MMPL9jm9ttvt1y5crlgdP369RE51yVLltjDDz9sK1assPnz59uZM2fcef3111/BbTp37uwC75kzZ9qmTZvsrrvucgHxunXr3PN169a1/fv3R7vdf//9Vrx4cXcdYqP96zh674sWLbJvv/3WTp8+7X4ezp8/H9xOAfaWLVvcuX355Zf2zTff2AMPPHDB/nTe7du3t5tvvvmKXCcAAAAAiCm1RdDu3butXr16LvB8+eWXrXLlyi4wmjdvngvyfvjhB0sucubMaU8//bSVK1fO0qZN64LD++67z2WKmzRpEgwyb7rpJhes9ujR47KOV3vEQjubOlOiX7d7ZHObO3dutMcmTZrkznPNmjVWv35999h3331nEyZMsFq1arn7gwcPtjFjxrhtqlWr5t6jstwetesXX3zhOlQURMdGQbV+JhSoK0st77//vuXIkcMF3Y0aNbJt27a581M23AvWx40bZ82aNbNRo0ZZgQIFgvvTOel6N2zY0J0vAAAAACTrTHavXr1cwLVq1Sq7++67rUyZMlaxYkXr16+fy6LKnj17rGXLlpY5c+Y4y4dD3XLLLfboo49Ge0zlzl27dg3eL1asmA0bNsxlY7XfokWLuozs77//HjxWlSpVbPXq1dECTXUGqAOgfPnybpumTZu6DG1C6LxUBq3XlixZ0h555BF3jGXLlgW3Ufn1kCFDXDDpJ8ePHw92FHiUqf7kk09c6bayzFOnTrV//vnHvc/Y6PoePnzYdSzE5dSpU+7nQRUNnvTp01vKlCmD12n58uWuHUKz4bpe2mblypXBxxSUf/rppzZ+/PjLfPcAAAAAcBUE2QrOlJFUxlrl0zEpkFLwpqBX26qEWeXBO3futHbt2l328ZV1VRZdWdPmzZu7AFdBd8eOHW3t2rUuENb9QCAQfE1UVJTLlqrMWyXK6gB4/PHHE31s7VPl8Cq39jLDfqU2UKeFrlWlSpWCj0+bNs1lp1XarqD4wQcftM8//9xKlSoV637effddl7EvVKhQnMe68cYb3c/CwIED3bVWZl/X99y5c8HODA0vUFY9VOrUqV0HgJ4TBfPqVFHHiJcRBwAAAIBkXS6uCakUbKqcNy4KRDXed9euXW6stnzwwQcu261yYU3OdalUXqzAUJQ9Vumz9temTRv3mAK9OnXquKy5V/asoPLNN990Abj07t3bnn/++URlhAsWLOgytqlSpbI33njDGjdubJdD+9LNc+LECfc1XcqApUr1fx0ECaX3GErvcfPmzfb1119He06l70ePHnUdJQq0lalWlYEyyCr7D/Xrr7+6CoApU6ZcsP+YHSsff/yxKyl/7bXXXHZaHSoqP/fOTQG3fm5i24+e0+OaCE2vU/t5r4ntvUWCdw5+OBdciPbxN9rH32gff6N9/I828jfax9/OJMFn7MTsO2JBdmiGOC4af6vg2guwpUKFCi4Y03OXE2SrVNuTL18+9zU0OPQeO3ToUDDIzpgxYzDAluuuu849n1Ca5VqTmWkmbHUgqCxeE77FVWKd0JnAn3vuuQseH1ztvGXM+N/gMjHmzJkT/P7tt992Jdgvvviibdy40d1EWWV1ECgQVon4vn37rHr16q7s/qmnnrKePXtG26fKyvXelXEO3X9cRo8e7ToLFGSrLF9ZabWXXqvr/dtvv0Xbj4JoZa91HnpcFQ+zZs1y+wnNyKv0XEMU/FCOr3OEf9E+/kb7+Bvt42+0j//RRv5G+1y77RMVFeX/ILt06dJu/G24JzdTYBYzgI+t1yFNmjTB772JuGJ7LHRW69DnvW0S0lkQem5eObVmF1dHgYLkywmyBw0a5IJ1j4JTdUoMW5fSzqZJlej9bR7axL0nlYirQ0Bl8WqrUKoukAYNGrgx5h6Nf1Y5uKoEPNrXY489Zt26dbM777wz0eejDLoqAFQ2XrZsWTc7+euvv+46PrRsmPfLpOM89NBDbuIzjdv2steigFtl/hpyoEoCTaQWKfpZ1PmqgiHmzxMij/bxN9rH32gff6N9/I828jfax9/OJMFnbK9i2NdBtsbQaoyuArO+ffteMC772LFjLoDbu3evu3nZ7K1bt7rnlNGOjdZXDp2MTMGWyp1vvfVW8xsF8KGl3pdC46FDJwrznDqfws6ei30W7/joh1LZXpV2azZwtZOyxJItWzbLkCGDy/irs0Cl5ApeVS4+Y8YMW7BggZs1PfQHWxl7lftria2YP/DKPGvmbw0B8GYpnzhxomt3taOCZU0QpyDdGw+ujLYmnFO2XKX7+oVSh8C9997rMuneNqE2bNjgOji8snM/0LUgyPYv2sffaB9/o338jfbxP9rI32ifa7d90iRivxFdwksBtibUUoClsc0Kjs6ePet6ITRGWgG1Ajqtizx27Fj3nAJAZVDjWmv5tttuc5nd2bNnu9JulQwrKI80Zax1zjonBdYqa9YEanqfHk3wpsnUVA4tmhhNlLUNXQ4rIVYOauiC30vhnVPMDLsCYJVu6wdM5//kk0+6NaxV/q6gW8tthWaxvQnPNBN5bGPvFSDrPYaWXui+svO6FpoFXmO/FWSHmjx5sgvwFaAreNbM9CpdBwAAAIBIi2iQrfHImsl7+PDh1r9/f5eBVgZT43sV6Kkc21tbWbNwK6BSFlPrIsdFZcnKXGpmcI0BVoDmhyy2ZspWB4EmAVM2WEHnRx99FG2mdE0eFrrElbKz8uyzz9rQoUOT7FwTUgKvEvLPPvvsotspIx4XBdExjzVy5Eh3i4+y6/HtNyZ1DIQu4QYAAAAAV0qKQGIGFcP3NFZAZd1//PHHJWeyceUoe68qAGX8KRf3H9rH32gff6N9/I328T/ayN9oH387kwSfsb04S/NFXWyZ4Iitkw0AAAAAQHJDkB0mWmoqrtvSpUvDdRgAAAAAgI9FdEx2cqLlruKiZaMAAAAAAMkfQXaYeOtfAwAAAACuXZSLAwAAAAAQJgTZAAAAAACECUE2AAAAAABhQpANAAAAAECYEGQDAAAAABAmBNkAAAAAAIQJQTYAAAAAAGFCkA0AAAAAQJgQZAMAAAAAECYE2QAAAAAAhAlBNgAAAAAAYUKQDQAAAABAmBBkAwAAAAAQJgTZAAAAAACECUE2AAAAAABhQpANAAAAAECYEGQDAAAAABAmBNkIGjFihNWsWdOyZMliefPmtVatWtn27dtjvUKBQMDuuOMOS5Eihc2YMSP4+OHDh61p06ZWoEABS5cunRUuXNh69+5tJ06ciPdKr1271ho3bmzZs2e3XLly2QMPPGAnT56MdVsdo1ChQu7Yx44di3Wbb7/91lKnTm1Vq1alhQEAAAAkmas+yB46dCiBVJgsWbLEHn74YVuxYoXNnz/fzpw5Y7fffrv99ddfF2w7duxYF+TGlDJlSmvZsqXNnDnTfvzxR5s0aZItWLDAHnrooTiP+9tvv1mjRo2sVKlStnLlSps7d65t2bLFunbtGuv23bt3typVqsS5PwXenTt3toYNGyb4vQMAAABAsgiyDxw4YH369LESJUoEM58tWrSwhQsXWnKioPHuu++2YsWKueBUQWpM586ds2eeecaKFy9uGTJksJIlS9oLL7zgssZJQcGtAtuKFSva9ddf7wLkPXv22Jo1a6Jtt379envllVfsvffeu2AfOXLksJ49e1qNGjWsaNGiLtDt1auXLV26NM7jfvnll5YmTRobP368lS1b1mXT33zzTfvss89sx44d0badMGGCC6Iff/zxOPengP5f//qX1alT55KuAwAAAABcqtQWQbt377Z69eq5EuGXX37ZKleu7LKn8+bNcxnVH374wZKLqKgo15HQpk0be+yxx2Ld5t///rcLIt9//30X6K5evdruu+8+y5Ytm/Xt2zdRx6s9YqGdTZ0pwdvvHtn8gseOHz/uvubMmTPa+1AAq4A4f/78F92vstTTp0+3Bg0axLnNqVOnLG3atC4L7lEngyxbtsxluGXr1q32/PPPu2z3zp07Y93XxIkT3XMfffSRDRs27KLnBwAAAADJJpOtDKeyuqtWrXJZ3jJlyrjgsl+/fq5kWZRJVflx5syZLWvWrNa2bVs7ePBgnPu85ZZb7NFHH432mMYWh5YeK5usAEwlxdqvMq4qb/7999+Dx1I5soJcj7K66gxQB0D58uXdNhp7vH///gS9V2Vn1ZFw7733uox9bL777jt3/ObNm7tzvOeee1y5tq5PUjt//ry7juoEqVSpUvBxdRDUrVvXnWd82rdvbxkzZrSCBQu6dvvPf/4T57a33Xabq2jQ9Tl9+rQdPXrUnnzySfecd30ViGuf2qZIkSKx7uenn35yr1OArfHYAAAAAJDUIhaJHDlyxJUnDx8+3DJlujDjqoBWgZ4X9Gq88NmzZ12Gu127drZ48eLLOv6YMWPsxRdfdOXZ+r5Tp04ueOzWrZsL5AYOHOiCcJV5e2OPlcUdNWqUffjhhy7r2rFjR1e2PHnyZAsHHf/tt992Y5nV4bBhwwaXyR09enScr1HwqZvHm2AsXcqApUqV8DJzVRCE0mRlmzdvtq+//jr43KxZs2zRokUu6A/dXu0S8/UvvfSSPfXUUy7wHTx4sAvYx40bF+ux9V7fffdde+KJJ2zQoEGWKlUqd/x8+fK5UnntW+2hUnK1ve7rmN5566ZSewXhQ4YMceX23mPe6/3COxc/nRP+D+3jb7SPv9E+/kb7+B9t5G+0j7+dSYLP2InZd8SCbI21VQBUrly5OLfRuOxNmzbZrl273Fht+eCDD1y2+/vvv3fZ4UvVrFkze/DBB933CsxUpq39qZxbFNRpTK+y5l5ZtC6sxgprrLQoEFT5crgoC6sgWddEgaaCRHVCdOjQId4ZwZ977rkLHh9c7bxlzHguwceeM2dO8HsF+irJVifExo0b3c0rxf75558td+7c0V6rwFfZfZ1rTHof6sBQwF27du1opeehVBL/1ltvufHWyvR749Z1X+f2xRdfuKoGjdMOpbZRm2kcv8aOr1u3Llhar58v3dKnT+8myItvsrSkponl4F+0j7/RPv5G+/gb7eN/tJG/0T7XbvtERUX5P8hOyGRe27Ztc8G1F2BLhQoVXJZbz11OkB0acCljKhoTHvOxQ4cOBYNslT97AbZcd9117vlwmTZtmsuKT5kyxXUkaIIxZYC1HFaXLl1ifY0yvyqv9yhI1/Uati6lnU2TKsHH3jy0iWsTHU/H/eabb6x06dLRtrnhhhvsjz/+uOAxZfdV4q4Mcmy0JJjcdNNNrgw+IVSer+B4wIABrr2Vxf7777+Dzyug7tGjh6to0Fh3Bf762QiloF2Z+KlTp7pzi61iIqmpo0a//FquTJO9wV9oH3+jffyN9vE32sf/aCN/o3387UwSfMa+2JLEvgiyFcApWxnuyc1Uxh0zgI8ttR968b1y8NgeU8l6bK/xtgnnzN8KKJXN1rhtL+j/5ZdfXLY6riBbWd/YxnifOp/Czp67cImtuOi9aYy8AnxljZVx1nrUXpZZE5HF7PDwKIBVybco66zsvzpAVOavcnu9L43t9oJ2lZurFF+VChqzLa+//rorl9dr9Aui14wcOdLy5Mnjno9Z8eBNyqZrpCBcqlWrFm0bdY7ovGM+7ge63gTZ/kX7+Bvt42+0j7/RPv5HG/kb7XPttk+aROw3YhOfKYhr0qSJm6U6tnWYVSasEuS9e/e6m0czTOu5mFlLj4Ky0MnIVHKtscVXA5UghM6w7ZVbhwb6V5JK5hW8avI4Zem92yeffJLgfSiofeedd1zWWu2nidLuvPNOt0xX6Pvcvn17tM4PBd7qeVLQrHJ1ZaETO6M6AAAAAERaRKdgVoCtDGetWrXc2GaVcGtCK2UyFfApoFbQpTHJGp+r55Rt1XJQWoc5rpmqVT49e/ZsV9qtScMUlEeaZs3W+/G+37dvnyvLVubWW6JK44o1rlmzZ6tcXOOLdf6ajC2xVg5qaLly5UrUay4lKx/zNbfeequbJT0+CuJjvk5j7RMjtn3EpHHYugEAAADANRFkayzt2rVrXWDZv39/l4FWJrp69eouyFY5tkqX+/TpY/Xr13dZXi2bFdcs1aKAVLNyqxxZyzgpk6rAL9K0XnRo2bLGMeumDgNvpnS9L812ro4EjfXWWGxNzqaJ2QAAAAAA/pciEM5BxYg4DcjXGGpNUJbYTDauPJXIa9y6ZrdnTLb/0D7+Rvv4G+3jb7SP/9FG/kb7+NuZJPiM7cVZGl6bNWtWf47JBgAAAAAguSHIDhONrY7rtnTp0nAdBgAAAADgYxEdk52caBKzuHjLVAEAAAAAkjeC7DDxZggHAAAAAFy7KBcHAAAAACBMCLIBAAAAAAgTgmwAAAAAAMKEIBsAAAAAgDAhyAYAAAAAIEwIsgEAAAAACBOCbAAAAAAAwoQgGwAAAACAMCHIBgAAAAAgTAiyAQAAAAAIE4JsAAAAAADChCAbAAAAAIAwIcgGAAAAACBMCLIBAAAAAAgTgmwAAAAAAMKEIBsAAAAAgDAhyAYAAAAAIEwIsgEAAAAACBOCbAAAAAAAwoQgGwAAAACAMCHIBgAAAAAgTAiyAQAAAAAIk9Th2hH8IRAIuK9//vmnpUmTJtKngxjOnDljUVFRduLECdrHh2gff6N9/I328Tfax/9oI3+jffztTBJ8xta+Q+Ot+BBkJzOHDx92X4sXLx7pUwEAAACAZEXJzGzZssW7DUF2MpMzZ073dc+ePRdtfCQ99YAVLlzY9u7da1mzZqUJfIb28Tfax99oH3+jffyPNvI32sffTiTBZ2xlsBVgFyhQ4KLbEmQnMylT/neYvQJsgjj/UtvQPv5F+/gb7eNvtI+/0T7+Rxv5G+3jb1e6fRKaxGTiMwAAAAAAwoQgGwAAAACAMCHITmbSpUtnzz77rPsK/6F9/I328Tfax99oH3+jffyPNvI32sff0vksBkoRSMgc5AAAAAAA4KLIZAMAAAAAECYE2QAAAAAAhAlBNgAAAAAAYUKQncyMHz/eihUrZunTp7fatWvbqlWrIn1Kyc6IESOsZs2aliVLFsubN6+1atXKtm/fHm2bf/75xx5++GHLlSuXZc6c2e6++247ePBgtG327NljzZs3t4wZM7r9DBgwwM6ePRttm8WLF9sNN9zgJnEoVaqUTZo0KUneY3IxcuRIS5EihT366KPBx2ibyNu3b5917NjR/X5kyJDBKleubKtXrw4+r6lChgwZYtddd517vlGjRvbTTz9F28eRI0esQ4cObi3M7NmzW/fu3e3kyZPRttm4caPdfPPN7v/DwoUL20svvZRk7/Fqde7cOXvmmWesePHi7tqXLFnSXnjhBdcmHton6XzzzTfWokULK1CggPu/bMaMGdGeT8q2+PTTT61cuXJuG/3Ozpkzx6518bXPmTNnbODAge5aZcqUyW3TuXNn++2336Ltg/aJTPvE9NBDD7ltxo4dS/v4qH22bdtmd955p1ubWr9H+vytz89XxWc6TXyG5GHq1KmBtGnTBt57773Ali1bAj169Ahkz549cPDgwUifWrLSpEmTwMSJEwObN28OrF+/PtCsWbNAkSJFAidPngxu89BDDwUKFy4cWLhwYWD16tWBG2+8MVC3bt3g82fPng1UqlQp0KhRo8C6desCc+bMCeTOnTswaNCg4DY7d+4MZMyYMdCvX7/A1q1bA+PGjQukSpUqMHfu3CR/z1ejVatWBYoVKxaoUqVK4JFHHgk+TttE1pEjRwJFixYNdO3aNbBy5Ur3cz5v3rzAjh07gtuMHDkykC1btsCMGTMCGzZsCNx5552B4sWLB/7+++/gNk2bNg1cf/31gRUrVgSWLl0aKFWqVKB9+/bB548fPx7Ily9foEOHDu539eOPPw5kyJAh8NZbbyX5e76aDB8+PJArV67Al19+Gdi1a1fg008/DWTOnDnw6quvBrehfZKO/jY8/fTTgenTp6uXI/D5559Hez6p2uLbb791f39eeukl9/do8ODBgTRp0gQ2bdoUuJbF1z7Hjh1zf+M/+eSTwA8//BBYvnx5oFatWoHq1atH2wftE5n2CaXn9TtSoECBwJgxY2gfn7TPjh07Ajlz5gwMGDAgsHbtWnf/iy++iBbX+PkzHUF2MqL/vB9++OHg/XPnzrn/MEaMGBHR80ruDh065P5zWLJkSfAPqz586MOpZ9u2bW4b/ZEV/ZKnTJkycODAgeA2EyZMCGTNmjVw6tQpd/+JJ54IVKxYMdqx2rVr54J8xO/PP/8MlC5dOjB//vxAgwYNgkE2bRN5AwcODNx0001xPn/+/PlA/vz5Ay+//HLwMbVbunTp3Id/0R9B/T59//33wW2++uqrQIoUKQL79u1z9994441Ajhw5gr9P3rHLli17hd5Z8tC8efNAt27doj121113uQBMaJ/IifkhNCnbom3btu5nI1Tt2rUDDz744BV6t1ef+IK40M5fbffLL7+4+7RP5Nvn119/DRQsWNB1MKkDODTIpn0i2z7t2rULdOzYMc7X+P0zHeXiycTp06dtzZo1rlTMkzJlSnd/+fLlET235O748ePua86cOd1XtYPKxELbQiV2RYoUCbaFvqqELF++fMFtmjRpYidOnLAtW7YEtwndh7cN7XlxKh1SaVDM60fbRN7MmTOtRo0a1qZNG1e2Va1aNXvnnXeCz+/atcsOHDgQre1UJqbhL6G/Pyp71X482l7/561cuTK4Tf369S1t2rTRfn80tOPo0aNJ9G6vPnXr1rWFCxfajz/+6O5v2LDBli1bZnfccYe7T/v4R1K2BX+Pwvd5QWWxahPaJ/LOnz9vnTp1cuXDFStWvOB5fn8i2zazZ8+2MmXKuP+P9HlB/7eFlpT7/TMdQXYy8ccff7ixdKE/RKL7+iOMK/efgMb71qtXzypVquQe0/XWhxXvj2hsbaGvsbWV91x82+g/hr///psmjcPUqVNt7dq1bux8TLRN5O3cudMmTJhgpUuXtnnz5lnPnj2tb9++9v7770f7+Y/v/zJ91R/cUKlTp3YdXYn5HcOFnnzySbv33nvdB5U0adK4ThD9H6cxvbSPvyTl70pc2/C7lHAaO6ox2u3bt3fj42mfyPv3v//tfh/0Nyg2/P5EzqFDh9zcEZpbp2nTpva///u/1rp1a7vrrrtsyZIlV8Xn7dSX/EoALmO6efNml+lB5O3du9ceeeQRmz9/vpucB/7smFJW7cUXX3T3FcTpd+jNN9+0Ll26RPr0rnnTpk2zyZMn25QpU1xmZ/369S7I1sQ0tA9waZRta9u2rZuoTp2MiDxlQV999VXXKa/qAvjvs4K0bNnSHnvsMfd91apV7bvvvnOfFxo0aGB+RyY7mcidO7elSpXqghn1dD9//vwRO6/krHfv3vbll1/a119/bYUKFQo+ruut8v1jx47F2Rb6Gltbec/Ft416wDWLLGL/o6neT80Qqd5p3dTj+dprr7nv1TNJ20SWZkGuUKFCtMfKly8fnC3U+/mP7/8yfVU7h9JMoZqlNzG/Y7iQyia9bLZK7FRKqQ84XmUI7eMfSdkWcW3D71LCA+xffvnFdQB7WWzaJ7KWLl3qfjdUWux9XlAb9e/f363SQ/tEPq5JnTr1RT8v+PkzHUF2MqFyierVq7uxdKG9QLpfp06diJ5bcqOeaAXYn3/+uS1atMgtdRNK7aAyy9C20Ng2/afgtYW+btq0KdqHH++Pr/cfirYJ3Ye3De0Zt4YNG7rrquybd1PWVKWu3ve0TWRpaEXMJe80/rdo0aLue/0+6Q9e6M++SrY0fjT090d/VNWp4tHvov7P05gtbxstD6IPuKG/P2XLlrUcOXJc8fd5tYqKinLjdUOpA9fLKtA+/pGUbcHfo8sLsLWs2oIFC9wyQ6Fon8hRB6KWrgv9vKCKHXU0aigT7RP5uKZmzZrxfl7w/efty5o2Db5bwkuzik6aNMnNiPjAAw+4JbxCZ9TD5evZs6dbMmXx4sWB/fv3B29RUVHRlhTQsl6LFi1ySwrUqVPH3WIuKXD77be7ZcC0TECePHliXVJASxdotsTx48ezhNclCJ1dnLaJPM2umzp1ardU1E8//RSYPHmy+zn/6KOPoi1LpP+7tFTHxo0bAy1btox1WaJq1aq5ZcCWLVvmZpMPXZZIs45qWaJOnTq5WWP1/6OOwxJe8evSpYubaddbwktLq2i5E82+SvtEZqUELTujmz6yjR492n3vzU6dVL8rWsJLv7ejRo1yf4+effZZlvC6SPucPn3aLalWqFAh93c+9PNC6EzutE/kfn9iijm7OO0T2faZPn26+3/m7bffdp8XvKW1tBTh1fB5myA7mdEPoH7YtF62lvTSupgIL/1HENtNa2d79AGnV69eblkU/eK2bt3a/WENtXv37sAdd9zh1iPVh9j+/fsHzpw5E22br7/+OlC1alXXniVKlIh2DFxakE3bRN6sWbPcHz11CpYrV879AQ2lpYmeeeYZ98Ff2zRs2DCwffv2aNscPnzYBQpaw1lLcdx3333uD3YorRus5cK0DwWOCkgQvxMnTrjfF/0dSZ8+vft/R+uYhgYFtE/S0d+A2P7eqDMkqdti2rRpgTJlyri/R1ruZvbs2YFrXXzto06quD4v6HUe2icy7ZPQIJv2iWz7vPvuu4FSpUq5v0day3zGjBnR9uHnz3Qp9M/l5cIBAAAAAIAwJhsAAAAAgDAhyAYAAAAAIEwIsgEAAAAACBOCbAAAAAAAwoQgGwAAAACAMCHIBgAAAAAgTAiyAQAAAAAIE4JsAAAAAADChCAbAAAkS4cPH7a8efPa7t27r8j+ixUrZmPHjk3w9lu3brVChQrZX3/9dUXOBwDgDwTZAAD4QNeuXa1Vq1bmVwpUU6RIYevXr7erxfDhw61ly5YuGA712Wef2W233WY5cuSwDBkyWNmyZa1bt262bt26RO3/+++/twceeCDB21eoUMFuvPFGGz16dKKOAwC4uhBkAwCAeJ0+ffqqu0JRUVH27rvvWvfu3aM9PnDgQGvXrp1VrVrVZs6cadu3b7cpU6ZYiRIlbNCgQYk6Rp48eSxjxoyJes19991nEyZMsLNnzybqdQCAqwdBNgAAPnTLLbdYnz597NFHH3UZ13z58tk777zjSo0VqGXJksVKlSplX331VfA1ixcvdtnm2bNnW5UqVSx9+vQuc7p58+YLMrkVK1a0dOnSuSzvK6+8Eu15PfbCCy9Y586dLWvWrC5bW7x4cfdctWrV3DF0fl42t3HjxpY7d27Lli2bNWjQwNauXRttf9r+P//5j7Vu3doFpaVLl3YBbqgtW7bY//zP/7jj6b3dfPPN9vPPPwef1+vLly/v3lO5cuXsjTfeiPf6zZkzx70/vX/PihUr7KWXXnKZZN10jCJFilj16tVt8ODB0a6ljq0suK575syZrWbNmrZgwYJ4y8UT8j51rY4cOWJLliyJ9/wBAFcvgmwAAHzq/fffd8HrqlWrXMDds2dPa9OmjdWtW9cFsrfffrt16tTJZW1DDRgwwAXOCoCVbW3RooWdOXPGPbdmzRpr27at3XvvvbZp0yYbOnSoPfPMMzZp0qRo+xg1apRdf/31roRaz+scRIHm/v37bfr06e7+n3/+aV26dLFly5a5IFaBZbNmzdzjoZ577jl33I0bN7rnO3To4IJN2bdvn9WvX98FxYsWLXLnqPJtL9s7efJkGzJkiCv/3rZtm7344ovunHR94rJ06VIXPIf6+OOPXcDcq1evWF+jINlz8uRJd54LFy5016Bp06buOu7ZsyfeNovvfUratGldFl3nBwBIpgIAACDiunTpEmjZsmXwfoMGDQI33XRT8P7Zs2cDmTJlCnTq1Cn42P79+wP6U758+XJ3/+uvv3b3p06dGtzm8OHDgQwZMgQ++eQTd/9f//pXoHHjxtGOPWDAgECFChWC94sWLRpo1apVtG127drl9r1u3bp438e5c+cCWbJkCcyaNSv4mF43ePDg4P2TJ0+6x7766it3f9CgQYHixYsHTp8+Hes+S5YsGZgyZUq0x1544YVAnTp14jwPXctu3bpFe6xp06aBKlWqRHvslVdecdfVux07dizOfVasWDEwbty4aNdpzJgxCX6fntatWwe6du0a53EAAFc3MtkAAPiUSr49qVKlsly5clnlypWDj6mUWQ4dOhTtdXXq1Al+nzNnTjexlzLAoq/16tWLtr3u//TTT3bu3LngYzVq1EjQOR48eNB69OjhMtgqF1e5t7LAMTO+oe8lU6ZMbjvvvDWZmkq306RJc8H+VR6v0m2NrVYW2rsNGzYsWjl5TH///bcrLb8YZcx1/Lfeessd67+x8n8z2Y8//rgrUc+ePbs7pq7dxTLZ8b1PjyZbi1l9AABIPlJH+gQAAEDsYgadKmcOfcwrbz5//nzYL6ECxIRQqbiWynr11VetaNGiruRbQX7MydJiey/eeSvojIuCXdF49Nq1a0d7Th0PcVGZ/dGjR6M9po4AlbWrdN47HwXQuv3666/RtlWAPX/+fFc2r7HvOsd77rnnopPAxfc+PSofL1myZLz7AQBcvchkAwCQzGhstEeB5o8//ugysqKv3377bbTtdb9MmTLxBq0aSyyh2W7vtX379nXjj73J1P74449Ena+yvxqj7I0bD6VsfYECBWznzp0u2A29eZOxxUYTtGld6lDt27d3QfvFJk3z3peWVdMkZqoeyJ8/f9jW29ZEdDo/AEDyRCYbAIBk5vnnn3el5QpQn376aZfV9dbg7t+/v5spW7OHaymr5cuX2+uvv37RwDNv3rwumzt37lwrVKiQK8VWebiywx9++KErLz9x4oSbdC2+zHRsevfubePGjXOTsWkZLe1XHQW1atVype6aTEyBvB7XBGSnTp2y1atXuw6Efv36xbrPJk2auH1pG83OLsqw6/3r9ssvv9hdd91lhQsXdhO5abkvZZ1Tpvxv/kHvS5O7abIzPa6J1sJRMaBAXRO9NWrU6LL3BQDwJzLZAAAkMyNHjrRHHnnEza594MABmzVrVjATfcMNN9i0adNs6tSpVqlSJTdrt4JyZW3jkzp1anvttdfc2GVllrW8lSg4VSCr/WqmcwXDCsgTQx0CmlVcWWYtAabzVnm4V3p9//33u6WxJk6c6LLK2kazoceXydZ23nsNpfJvrYutGcO1ZJiCac3YrgBaHQ4aQy1a4kvBuWZyV6CtoF37u1ya4Vyzwqu0HgCQPKXQ7GeRPgkAAHD5tE72rbfe6oJejTO+1mm9cGXWVZ7tZagjSeO5FdQryI85+RwAIPmgXBwAACRLzZs3d7OmqzxbZeGRppnJn3rqKQJsAEjmyGQDAJBMkMkGACDyCLIBAAAAAAiTyA9QAgAAAAAgmSDIBgAAAAAgTAiyAQAAAAAIE4JsAAAAAADChCAbAAAAAIAwIcgGAAAAACBMCLIBAAAAAAgTgmwAAAAAAMKEIBsAAAAAAAuP/w//Za51QgkDAAAAAABJRU5ErkJggg==" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAMWCAYAAADs4eXxAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA6LBJREFUeJzs3QmcTfX/x/EPY98je7KLLJEtUfalJEqoLElFJSXaFGWNIrSIdtFCv1QUkYS02EKhiCKySwg/y5j5P97ff+f+7ty5d8ww19yZeT0fj2vGveeec+bOmXvP5/v5fD8nQ2xsbKwBAAAAAIBklzH5VwkAAAAAAAi6AQAAAAAIIzLdAAAAAACECUE3AAAAAABhQtANAAAAAECYEHQDAAAAABAmBN0AAAAAAIQJQTcAAAAAAGFC0A0AAAAAQJgQdAMAAKSQ7du3W7Zs2ezbb789L9vr3r27lSpV6qye+9hjj1ndunWTfZ8AIK0j6AYApEmTJ0+2DBkyBL0peAiH7777zgYPHmwHDx60SH09Vq5caanVyy+/7H6OtGTo0KEukK1fv368x5YsWWIdO3a04sWLW5YsWSxv3rxuWT1nz549531f+/btaz/++KPNmjXrvG8bAFKzTCm9AwAAhJMClNKlS8e5r0qVKmELuocMGeKyifny5QvLNtIzBd0XXnihe33Tgn379tnbb7/tboGefPJJGzZsmJUpU8b9vPp6/Phx++GHH+y5555zz/ntt9+SvM3XXnvNYmJizmp/ixQpYm3btrUxY8bY9ddff1brAID0iKAbAJCmXXPNNVarVi1LzY4ePWo5c+a09OrYsWOWI0cOS2veeecdy5Qpk7Vp0ybO/dOnT3cBt7LcU6dOdVluf+PGjXO3s5E5c+Zz2mftU4cOHez33393AwEAgDOjvBwAkK59/vnndtVVV7mgNnfu3Na6dWtbv359nGV++uknX7ZR82+V8evRo4f99ddfvmVUVv7www+775VZ90rZt27d6m76PlhptO7Xc/3Xo/t+/vlnu/XWW+2CCy6wBg0axAnUatasadmzZ7f8+fPbzTff7OYFnw39TLly5bJt27bZdddd575XKfOECRPc42vXrrUmTZq416ZkyZL23nvvBS1Z//rrr61Xr15WoEABy5Mnj3Xr1s3+/vvvoJnqypUrW9asWa1YsWLWu3fveKX4jRo1cpUIyuheffXVLth+/PHH3Txk/V4WL17se221rBw4cMAeeughq1q1qvsZtA8abFEptL9Fixa5533wwQc2YsQIu+iii9zvs2nTprZ58+Z4+7ts2TK79tpr3e9Ar0G1atXs+eefj7PMhg0b7KabbnK/C61LAzyJLb/+5JNPXLm49jkwy62M/htvvBEv4BaVmfsfMzJz5kx37Op11etbtmxZF7ifPn06wTnd3rGp7PWrr77qnqfn165d21asWBFv282aNfNtDwCQOGS6AQBp2qFDh2z//v1x7lNAI8oi3nbbbdayZUt75plnXEZ14sSJLshdvXq1LziZP3++y+zdfvvtLuBW8KcARV+XLl3qgpYbb7zRfv31V3v//fddFtLbRsGCBV0ZcVIpm1i+fHl7+umnLTY21t2nQHHQoEEu23jnnXe69b744osuONX+nk1Ju4IyBahax7PPPmvvvvuu3XfffS7IfOKJJ6xz587uZ5s0aZILpuvVqxevXF/La9sKBDdu3Ohewz/++MMX5IoeU+m9grZ77rnHt5wCOzUR88/AajBD+6QBhS5duljhwoVdgN2nTx8XoGq/RPeLfjcKYPWaad803/mVV16xhg0busELBaL+Ro0aZRkzZnSBuo4P/dz6ORVke/Q710BE0aJF7YEHHnC/919++cU+++wz93/R719zsTVQoT4Bes0U0Ldr185mzJhhN9xwQ8jX/dSpU+5n12vhT8eQbvr9BgbjCdEAiJbv16+f+/rVV1+54P3w4cM2evToMz5fAyr//POPGzzR70yviX7vem39fzcK+BWY63f24IMPJnr/ACBdiwUAIA166623FKkGvck///wTmy9fvti77rorzvN2794dmzdv3jj3Hzt2LN7633//fbeur7/+2nff6NGj3X1btmyJs6z+r/u1T4F0/1NPPeX7v77Xfbfcckuc5bZu3RobFRUVO2LEiDj3r127NjZTpkzx7g/1eqxYscJ332233ebue/rpp333/f3337HZs2ePzZAhQ+y0adN892/YsCHevnrrrFmzZuzJkyd99z/77LPu/pkzZ7r/7927NzZLliyxLVq0iD19+rRvuZdeeskt9+abb/rua9iwobtv0qRJ8X6GypUru8cDHT9+PM56vdc8a9assUOHDvXdt3DhQrfuSpUqxZ44ccJ3//PPP+/u12sp0dHRsaVLl44tWbKk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8uTJ4x47ePBgvOf9+uuv1rZtW7vwwgvdcg0aNLCFCxcm+CprXcFuo0eP9i2zatUqa968ueXLl88KFChgPXv2tCNHjsRZz/333281a9a0rFmzWvXq1fnNAgAAIMWli6B78ODBnIADSbBixQp75ZVXrFq1anHuP3bsmLVq1coef/zxkM+97rrrLDo62r766iv74Ycf7LLLLnP37d69O+Rzdu3aFef25ptvuqC7ffv27vGdO3das2bNrFy5crZs2TKbO3eurV+/3rp37x5vXT169LBOnTrx+wYAAEBESBVBt07W+/TpY2XKlHEZrBIlSlibNm1swYIFlpYoiFCQUapUKRdwjB8/PqV3CemQssedO3e21157zS644II4jynr/dhjj9kVV1wR9Ln79++3TZs2uWUUsJcvX95lzBWsr1u3LuQ2ixQpEuc2c+ZMa9y4sfubl88++8wyZ85sEyZMsEsuucRq165tkyZNshkzZtjmzZt963nhhResd+/evucBAAAAKS2TRbitW7da/fr1XUmpSk2rVq1qp06dsnnz5rmT6w0bNlhaocBEwUKHDh3swQcfPKd11R25wKIz5Uy2fUPatnVUa9/3+rtq3bq1yywPHz48SetR2beC4ilTptjll1/uBsmUMS9UqJAr+06MPXv22OzZs+3tt9/23XfixAnLkiWLZcz4v3HC7Nmzu6/ffPONy4ADAAAAkSjiM9333nuvy/ouX77cZYErVKhglStXtn79+tnSpUvdMtu2bXNzSHPlyuXmkHbs2NGduIeiOan+81SlXbt2cUpVlW1WwNGtWze33pIlS9qsWbNs3759vm0pk7dy5UrfcyZPnuwGBzQgUKlSJbeMSnFVLpsYyt5pYOHmm292wQpwvk2bNs3NnR45cuRZPV9/q19++aWtXr3acufObdmyZbOxY8e6cvDArHkoCrb13Btv/L/27gRexrr///iXQ7Jv2fdddlkKZd/dQt2FJFKUrWS9dUuI+Fm7k3T/SpSI/Fu0oBAiZJctJUTW7MuxHeb/eH/rmt+cc2aOc3IuM2fO6/l4zOOcmeuaa66Z850587k+n+/nesh7W/369W3Fi94fV69eNadPn7bZdInv+wsAAAAIhpDOdJ86dcp+WR81apRJnz521lYB7o0bN7xB8IoVK+xcUmXqNKdz+fLlt/T4kyZNMq+++qp56aWX7O8dO3Y0NWvWtHNG9eV/0KBBNihXWbiCDSdbPX78eDNz5kyblXv88cdN//79zaxZs4wblAHUxXHu3Dn7M01Kj4mI8LjymAg/qh45ePCgef75582CBQtMRESEvc3j8dj3mH73pfeZcz/fZVq/e/fuJkeOHLZ5mrLRmp+t6SCrV6+2zdWc+wUybdo00759e+8+iA626faBAweawYMH22W9evUyuXLlso8Zc3vXr1/3eztws/fBzcYnEEyMUYQyxieS4/i8Fs/thXTQrbma+uJcunTpgOtoXve2bdvMvn377FxvUWmrsuFqBqXs8d/VvHlz88wzz9jfhw4daqZOnWq3p/JvUdBdo0YNm1XXPFTnhddc02LFitnrCgxGjBhh3KKM5PDhw2PdPqTyDZMu3XXXHhfhRYG2KkeOHz9uqlev7r1dAffKlSvtXOp58+bZYFf0npNvvvnGHvBybN261W7rgw8+sJ3NdWnWrJmtEhkyZIi3MdrixYv97ocOYKn7uQJ3bcdX5syZbam6tqlKEKfvga7HXFfzynUAKubtQHwEGp9AqGCMIpQxPpGcxmdkZGTSD7oVcN/Mrl27bLDtBNxSpkwZmwXXslsJun07NyujJppTHvM2BSpO0J0uXTpvwC158uSxy92irJ9K7R0KNPRajNyc0kSl/jNAAm5m+7Am5oEHHrBTM3x17drVztFWtUa5cuW8tzuVJ40bN7bvNd8gXTStwjcY1+9qqqZTfunDTj/VGC0mNUbTXHBVq9yMpnOofH3AgAHR9kE07UPvfx04A+JLB03jGp9AsDFGEcoYn0iO4/PcX1XGSTro1pd0ZbMSu1mayr5jBvT+SgN8/yBO+bi/25xAI+ZyZ534HDz4u5Tx8zf/+8qNFCbq+p/7B9yMxm22bNnsxZeCZZWKV65c2V7XvGpd1OBQ9N7U/OuCBQva+ypw19ztp59+2laHqLxcXdC1/oMPPuh9f2h76mrepk2baB9aCronTJjg98PwjTfesNM7tE/60FSwrW1o/3yrY9R9Xb0XLl++bDPnzoE4NWID4kPjj6AboYwxilDG+ERyGp+p47mtkA669SW+SZMmtrT1ueeeizWvW2Wlalimuai6ONnunTt32mX6ou2PvqT7Nl/S/E+dzkinKAoXPwxuYDtJA4lJUyd8pzPUrl3b/pw+fbptRKg52+rD8O9//9s2P9PBLE310CnAdL5u5+CWSsjPnj0bq4mbDlBpPrc/aqb48ssv26BaU05Uaq4+C74U7Ku3g8M5WKDpJ2qOCAAAANxuIR10iwJunTJM80w1N1ol32ripEyX5lgrwFbJt84rrPmdWqaO53Xq1DFVq1b1u00FAyrJ1mmJVAqu7soK0oNNXZn1fJzfDx06ZLZs2WIze5wSCcEQsxnhsGHD7CUuet+pg39cNL5jHhns1q2bvQSiXg0J3V8AAAAg2EL+lGE6b7VOYaQsdL9+/ey8UtXiq4Gagm6VbyuLppJWZd10bmHdZ+7cuQG3qe7jnTp1sp3HFZxr/VDIch8+fNhm5nRRJl5d0PW7sncAAAAAgKQnhcfNCce47TQvVl2eT5w4QXk5Qo7Ky9VRXA3OmDOLUMP4RKhjjCKUMT6RHMfnub9iL02bzJQpU9LNdAMAAAAAkFQRdN9Gmpsd6KJzIQMAAAAAwkvIN1ILJ2qKFki+fPlu674AAAAAANxH0H0b0YEcAAAAAJIXyssBAAAAAHAJQTcAAAAAAC4h6AYAAAAAwCUE3QAAAAAAuISgGwAAAAAAlxB0AwAAAADgEoJuAAAAAABcQtANAAAAAIBLCLoBAAAAAHAJQTcAAAAAAC4h6AYAAAAAwCUE3QAAAAAAuISgGwAAAAAAlxB0AwAAAADgEoJuAAAAAABcQtANAAAAAIBLCLoBAAAAAHBJkg+6hw0bZipVqhTs3QBC2tSpU02FChVMpkyZ7KVGjRpm4cKF3uW//vqradOmjcmRI4dd/uijj5pjx45F28apU6dMhw4d7PIsWbKYp556yly4cCHOx718+bLp2bOnyZ49u8mQIYPd7pkzZ6Kts3TpUlOzZk2TMWNGkzt3bjNo0CATFRXld3t79uyx6+nxAQAAgKQg6EH30aNHTe/evU3RokVNmjRpTIECBUzLli3tF/FwsmPHDvPwww+bwoULmxQpUpjXXnst1jqjR4821apVs0FFzpw5TevWrc3u3buDsr8IL/nz5zdjxowxGzduNBs2bDD169c3rVq1suPy4sWLpnHjxnZcfvvtt+b77783V69ete/DGzdueLehgFvrL1682Hz55Zfmu+++M926dYvzcV944QXzxRdfmHnz5pkVK1aYI0eO2P1wbN261TRv3tw0bdrUbN682cydO9d8/vnn5l//+lesbV27ds20b9/ePPDAA4n86gAAAADuSWWCaP/+/aZWrVo2azVu3DhTvnx5+8X666+/ttmxn376yYSLyMhIe2DhkUcesYGIPwpK9LwVeCvT9+KLL9pgaOfOnSZ9+vQJerx7Ry81UakSdh+En/1jWtifCqB9jRo1yma/165daw4dOmTfiwp6lcWW9957z2TNmtUG4Q0bNjS7du0yixYtMuvXrzdVq1a160yePNkGzOPHjzd58+aN9dhnz54106ZNM7Nnz7ZBvrz99ts24/7DDz+Y+++/3wbZuj506FC7vHjx4mbs2LE2I/7yyy/bA1COIUOGmNKlS5sGDRqY1atXu/iqAQAAAGGS6e7Ro4fNrq1bt85mgUuWLGnKli1r+vbta4MBOXDggM3IqTQ1UNmrr7p165o+ffpEu00Z486dO3uvK9s8cuRI88QTT9jtFipUyGbX/vjjD+9jKRBQRtAxY8YMe3BABwTuvvtuu46yc8rcxYcCaR1YaNeunc3o+6OgRvup16BixYr2MfX8lZ0EEsv169fNnDlzbIZbZeZXrlyx70PfcXnnnXealClTmlWrVtnra9assePfCbhFwbjWUQDtj8atDqJpPYeCZpWwO+9vPbYey1fatGltWbrvuFfwr2z5lClTGAgAAABIUoIWdGt+qIJMZXb9ZXH1BV+lrQqCta6ywCpr3bt3r2nbtu0tP/6kSZNsll3ZvRYtWpiOHTvaIPzxxx83mzZtMsWKFbPXPR5PtGy1snozZ860pbUKiPv372/cokyhZMuWzbXHQPKxbds2e7BIwfWzzz5rPv30U1OmTBlz33332feg5lJrjCsY17hWcO4cVNI0EE158JUqVSo7NrXMH91+xx13xJp/revOfZo0aWKz1h9++KF9PGXdR4wYYZc5j33y5El7MEoHoZxMPAAAAJBUBK28XA2RFNAq8xWI5nUrUNi3b5+d6y3vv/++zQSrzFXZ479LZbHPPPOM/V2lrSq11fZU/i0KQJQFVFZdzZ1EWbu33nrLBuTSq1cvb4CQ2HTAQRl7HRgoV65cwPWUKdTFce7cOfszTUqPiYj4vwMGSJ40Zh2a3qD3jcbIxx9/bDp16mSWLFliA28Fveqt8Prrr9vstQ5sVa5c2bsNBcR6v/puz6Fl/m53mqH5LnN+1/jW7/Xq1bNzvHUQQAe+dEBA0ypWrlzpXUcN27Q/ej86+xJzu0Bivl8YWwhVjFGEMsYnkuP4vBbP7QUt6PbNIAeieaQKtp2AWxQgKFOmZbcSdKt83JErVy77U3PKY952/Phxb9CdLl06b8AtefLkscvdoAqA7du3e8t7A1HzteHDh8e6fUjlGyZduj+DEyRfCxYs8Hu7DuZoqsTAgQPtNA+ZOHGiDcgVdCsjruyy3ifahsb54cOHo21Pwa+y0MpO+3uc3377zTZk++ijj+z2HOperioO5z6aVqI55KdPn7YZd+c9pUy31lGFi5qxaf8cCshVlq599y1fBxKDxhwQyhijCGWMTySn8RkZGRnaQXeJEiXsPNLEbpamgCFmQO/vCETq1Km9v2s/At3m273Zd7mzTnwOHiSUMuhOd2h1nY7L4MGD7Rx4h4ImHaQYuTmliUodkej7hqRl+7AmAZepg74OLqnqI6Zly5bZwFhl5qVKlTJFihQxb7zxhj0Adc8993g/tDT+laX210hNgf0rr7xiy9Cdx1D3c/VOUFZbywOdBlBjWO+DiIgIO5/cyW6LAnBN89CUk3z58tmGb0Bi0P8KjetGjRrF+rwHQgFjFKGM8YnkOD7P/VVlHLJBt+aCaj6nGiM999xzseZ1KxumhmUHDx60FyfbrU7eWqaMtz9q0uTb3Exf1pUxVhlrqFMAoxJfzbVdvny5DXRuRuW4/hqzXbmRwkRd//PAAZIv50NFB2eaNWtmChYsaM6fP287iitoVbZb60yfPt2+3/T+UZD7/PPP2y77ztQGZbzVOLB79+52ioU+uDT9QY0B1YhQlPFWZ3FNAalevbq56667bGm4sumaD6752AqkFcQr4Hb2TQ0GtW0dMPvkk0/sdWXHnQZrvlUpzmnGtK5T/g648b4h6EYoY4wilDE+kZzGZ+p4biuopwxTwK0v3/qCrrnR+nKteaA6CqE51gqwVfKt8wMrK6dlKietU6dOtC7KvnRqImV+v/rqK1sKrpJUBenBpjJbPR/ndwUoW7ZssWW3Ok2SU1KuYGj+/Pn2VElOs6nMmTPbjs4J8cPgBiZ79uwuPBMkRSrZVmNAHZDSeNJ7TQG3jvaJzgevwFxNC9Xd/9///nesU9vNmjXLBs0KrBX06owDmgPuUCCu7fiW2ahhobOueg/o8ZxeCo6FCxfaU5hpubr2a/zrAAEAAAAQDoIadKuxkzqF6wt3v379bECgTFuVKlVs0K3ybX0BV/a3du3a9su7MmI6P3AgXbp0sZkwBRgqa1XgEApZbs2H9c3MqTxWFx1AUFZb9Jyd0575UhbS95RnQELpfNlxUTMzXW5WnaKDQoEoWI853ULZah1cc071pcA85vxvnQ4sIfRe4P0AAACApCKFx41JyQgazStQJvPEiRNkuhFynKBbc7wp30WoYXwi1DFGEcoYn0iO4/PcX7GXeiHFdWrboJ2nGwAAAACAcEfQnUg0NzvQReccBgAAAAAkP0Gd0x1O1BQtEJ3WCAAAAACQ/BB0JxKnAzkAAAAAAA7KywEAAAAAcAlBNwAAAAAALiHoBgAAAADAJQTdAAAAAAC4hKAbAAAAAACXEHQDAAAAAOASgm4AAAAAAFxC0A0AAAAAgEsIugEAAAAAcAlBNwAAAAAALiHoBgAAAADAJQTdAAAAAAC4hKAbAAAAAACXEHQDAAAAAOASgm4AAAAAAFxC0A0AAAAAgEsIugEAAAAAcAlBN5AETZ061VSoUMFkypTJXmrUqGEWLlzoXV63bl2TIkWKaJdnn33W77ZOnjxp8ufPb9c5c+ZMnI87atQoU7NmTZMuXTqTJUsWv9tq2rSpyZs3r0mTJo0pUKCA6dWrlzl37lys/b/77rtN2rRpTalSpcz777//t18LAAAAIJQli6B72LBhplKlSsHeDSDRKEgeM2aM2bhxo9mwYYOpX7++adWqldmxY4d3na5du5ojR454L2PHjvW7raeeesoG8PFx9epV88gjj5ju3bv7XZ4yZUq7H59//rn5+eefzYwZM8ySJUuiBfw6ODBkyBD7vtT+Dh8+3PTs2dN88cUXCX4dAAAAgFCXJILuo0ePmt69e5uiRYt6s2ctW7Y0S5cuNeHk2rVrZsSIEaZYsWLmzjvvNBUrVjSLFi0K9m4hBGn8N2/e3JQoUcKULFnSZqAzZMhg1q5d611H2ejcuXN7L8qIx6SMs7Lb/fv3j9fjKkB+4YUXTPny5f0uz5o1qw3Iq1atagoVKmQaNGhgevToYVauXOldZ/ny5faAQNu2be17ul27dqZbt27mf/7nf/7WawEAAACEslQmxO3fv9/UqlXLlrKOGzfOftlXcPr111/b7NhPP/1kwoWyfx988IF5++23TenSpe1zbNOmjVm9erWpXLlygrZ17+ilJipVetf2FcGxf0yLWLddv37dzJs3z1y8eNGWmTtmzZplx5MCbgXpL730kg3EHTt37rQHeX744Qezd+9eV/b38OHD5pNPPjF16tTx3qb3rw6e+VKZ+bp16+yy1KlTu7IvAAAAQDCEfKZbWTLNNdUX8ocffthm9cqWLWv69u3rzeodOHDAlrQq06ds3qOPPmqOHTsWcJua79qnT59ot7Vu3dp07tzZe71w4cJm5MiR5oknnrDbVdZOJbN//PGH97FUkqvSXodKaXVwQMGy5qtqHc1vVWlvfMycOdO8+OKLNoOpDKAyhvp9woQJf+OVQ7jbtm2bHWMKYFW+/emnn5oyZcrYZY899pgNuJctW2YGDx5sx9bjjz/uve+VK1dM+/bt7YGsggULJvq+adsK8PPly2ffk++88453mQ4gTZ8+3ZbGezwe+x7ScgXcJ06cSPR9AQAAAIIppDPdp06dsuXVKp1Nnz521lYB7o0bN7xB8IoVK0xUVJTNgKt0VWWst2LSpEnm1VdftRlC/d6xY0fbRKpLly42WBk0aJANyjUvVQcGJDIy0owfP94GOZrfqkBHpbvKOt6MAiGVlcfMAK5atSrO++jicBpWpUnpMRERnlt49ghFCkwdOjCzfv16+zf/+OOPTadOnez8aQXeTz75pHc9VU3kyJHDNGnSxFaGaPqCxq4amOl9om3qfeNs3/cxAlF2Peb++NL8cR1A+uWXX2wFhw5yTZ482a6vg2IKyO+77z4bdOfKlcu+T3RwSduNz+MDbnDGHmMQoYoxilDG+ERyHJ/X4rm9kA669+zZY7+UK2gIRPO6lfHbt2+fnest6oSsbLgCkmrVqv3tx1eW+ZlnnrG/Dx061M5/1fbUSEoUuKicV1l1lfA6L/xbb71lAxtR52aV8MaHgqKJEyea2rVr2/vruak01wlw/Bk9erSdZxvTkMo3TLp0ge+HpGnBggV+b9cUDFVYDBw40FaHxHT58mX7c86cOTbTPH/+fFshomDdl8axxrcy1XHZunWrHeuB9scRERFhD1YpAL/33ntNtmzZbGZeVSs6WKb55JoH/s0339gDTHrP6mAVEEyLFy/mD4CQxhhFKGN8IjmNz8jIyKQfdCvgvpldu3bZYNsJuEWZPmXBtexWgm7fjs7KxolvAynntuPHj3uDbmXwnIBb8uTJY5fHx3/+8x/bYEoHGZQ513aUsXz33XcD3kelwyq1dyjrqddi5OaUJip1RIKeL0Lf9mFNAi577bXX7JjUwaKY1BdANLdb41pZ7kuXLnmXq9RbY0/VIcqg58yZM879UBm45l77e6yYMmbMaH/ef//9ttxcH3aNGjWKNndb+/7ggw+af/zjHzfdHuAWHUjyNz6BUMEYRShjfCI5js9zMU6LmySDbnVmVvCZ2M3SlEmLGdD7Kw3w/YM45eP+blOJu7/7OOvE5+CBqAT4s88+s1lJne9Y5zr+17/+ZYOgQJQ1jNmUSq7cSGGirv+5fwgfzvjSwZZmzZrZ+djnz583s2fPttMrlO1WBlvXFRBnz57d/Pjjj7bjuCooqlSpYu8fs3rk7Nmz3oNKzvm31UdB0ydUcaFgWbRtTfs4dOiQrcBwTlFWvHhxO8VDmW9Vfuhgl65r+YABA2wmXu9nvc90348++sjedvr0aVvdofVUoUKgg1CgcchYRChjjCKUMT6RnMZn6nhuK6SDbpWiquR6ypQp5rnnnos1r1ulqWpYdvDgQXtxst3qyqxlTlMpf8Gtb3MzBQ/bt2839erVM6FA87oV5ChAUfmv5sAm1A+DG9iAC+FJ1RMKiDWOM2fObLPXCrh19E7vBc3tVvZYHc31vlA5t+ZWJ7RcZvfu3dEOSGmaxXvvvee97nTVV8M2NShUibi67yvIV68BPfZDDz1kDx45dJBK+6YyeH1Q6X2nTLyaFwIAAADhJqSDblHArYxY9erV7dxoBRdq+qTyAM2xVoCt7FyHDh3sF3kt05d5naJI5wr2p379+rYk+6uvvrIl3Mq0KUgPNp26SVnASpUq2Z/Dhg2zAYrm6QK+pk2bFvAFUaCrrHdCKGCOWZHh7zZ16NclECeAjov2T3O3ySQCAAAgOQj5jkUqrd60aZP9Mt+vXz9Trlw5m81TyauCbpVvqymUmjGpfLZhw4b2PnPnzg24TXUfV6dnZQoVnGv9UMhyq6xc2Uhl6HV+bmW71bncKfcFAAAAACQtKTzxnXCMJEGT+VVurEZXlJcj1DgdzzXfnEw3Qg3jE6GOMYpQxvhEchyf5/6KvdQfKVOmTEk30w0AAAAAQFJF0H0bqZtzoMvKlStv564AAAAAAG6DkG+kFk62bNkScJlzSiYAAAAAQPgg6L6NdC5jAAAAAEDyQXk5AAAAAAAuIegGAAAAAMAlBN0AAAAAALiEoBsAAAAAAJcQdAMAAAAA4BKCbgAAAAAAXELQDQAAAACASwi6AQAAAABwCUE3AAAAAAAuIegGAAAAAMAlBN0AAAAAALiEoBsAAAAAAJcQdAMAAAAA4BKCbgAAAAAAXELQDQAAAACASwi6AQAAAABwCUE3AAAAAAAuSfJB97Bhw0ylSpWCvRvAbTN16lRToUIFkylTJnupUaOGWbhwoXd53bp1TYoUKaJdnn322WjbeO6550yVKlVMmjRp4vX+2b9/f6xtOpd58+bZdWbMmBFwnePHj9t1VqxYYVq3bm3uuOOOaMuPHj2a6K8TAAAAEAqCHnTry3bv3r1N0aJFbQBQoEAB07JlS7N06VITTnbs2GEefvhhU7hwYRtkvPbaa7HWcZbFvPTs2TMo+4zQlD9/fjNmzBizceNGs2HDBlO/fn3TqlUrO8YcXbt2NUeOHPFexo4dG2s7Xbp0MW3bto3XY+p96bs9XYYPH24yZMhgmjVrZtfRtmKu06RJE1OnTh2TM2fOaNvbvn17tPViLgcAAADCRapgPriyZ7Vq1TJZsmQx48aNM+XLlzfXrl0zX3/9tQ00f/rpJxMuIiMj7YGFRx55xLzwwgt+11m/fr25fv16tMCkUaNG9j4Jde/opSYqVfpb2meElv1jWtifOijla9SoUTb7vXbtWlO2bFl7W7p06Uzu3LkDbuv111+3P//44w/z448/3vSxIyIiYm3v008/NY8++qgNvCVt2rT24tC2v/32WzNt2rRY21OQnSNHjps+LgAAAJDUBTXT3aNHD5vJXbdunc0ClyxZ0gYNffv2tQGEHDhwwGbx9MVepbT6kn/s2LGA21RpbZ8+faLdpnLWzp07R8sojxw50jzxxBN2u4UKFTKff/65DRKcx1L5rrKIDpXO6uCADgjcfffddp2mTZvaLF18VKtWzR5YaNeunc3o+6MgRIGNc/nyyy9NsWLFbKYQ8EcHaebMmWMuXrxoy8wds2bNMnfddZcpV66cGTx4sD3ok5iUZd+yZYt56qmnAq7z/vvv2+D/n//8p9/3Q548eexBpe+//z5R9w0AAAAIJUELuk+dOmUWLVpkM9rp08fOyCrAvXHjhg2Cta7mgi5evNjs3bs33iWxcZk0aZLNsm/evNm0aNHCdOzY0Qbhjz/+uNm0aZMNdnXd4/F476PAZfz48WbmzJnmu+++swcE+vfvb9xw9epV88EHH9gSYB2YAHxt27bNHvjRARzN11bWuUyZMnbZY489ZsfOsmXLbMCt8apxnZiUvdbBp5o1a8a5jvbFN/utg0ndu3c3c+fONR9//LEtW9eBMr3nAAAAgHAUtPLyPXv22IC2dOnSAdfRvG4FF/v27bNfzp3smbLhKsVWtuzvat68uXnmmWfs70OHDrXludqeU8o9aNAgmzlUVt0pq1Xp+1tvvWUDcunVq5cZMWKEccNnn31mzpw5Ey1D78+VK1fsxXHu3Dn7M01Kj4mI+L8DBkj6NP4cmqqg94D+3gpeO3XqZJYsWWID7yeffNK7nt5fqqDQ3GpN13DGrm+mXO9D323fzKVLl8zs2bPNiy++GPB+qlTZtWuXmT59eqz91r5oKknq1Knte06fBRMmTLDVJEAwOWM1Ie8H4HZijCKUMT6RHMfntXhuL2hBt28GORB9aVew7QTcoqBCWXAtu5WgW+Xjjly5ctmfCgRi3qauy07QrVJZ36BF5bFOV+bEpiyhGlTlzZs3zvVGjx5tG1rFNKTyDZMu3f/ND0fSt2DBAr+3q2JD0x4GDhxop2zEdPnyZftTZeiVK1eOtuyXX36xgXugbfujDLrK2fW+CHS/yZMnmyJFithGif7WUdWKI3v27LZcPSH7ALjJd3wCoYgxilDG+ERyGp+R8ZzCGbSgu0SJErZsOrGbpaVMmTJWQO/vCISybA6nfNvfbSpx93cfZ534HDxIqN9++81mLT/55JObrqvyYc2BdyiA0kGKkZtTmqjUEYm+bwie7cOaBFymbvg6UKQKjphWr17tbcDme7BJ1LdAB7D83S+QiRMn2m21b9/e7/ILFy7Ycnb1TYi5Xb0X9WGnudzO+0kBujLyCdkHwA3+xicQShijCGWMTyTH8XnuryrjkA26s2XLZstMp0yZYs8ZHHNet0qrNWf04MGD9uJku3fu3GmXOfNXY1IprW9zM5XPqgt4vXr1TFKhklx1d9Zc85vRnF5/jdmu3Ehhoq4zFzycOB8QOtCiKoiCBQua8+fP21Jv9TxQtlt9BnRdAawyyOpMrm75tWvXtufldqikW8GxmgcqE+6cbkzvK51D+9ChQ6ZBgwZ2Okf16tWj3W/lypU2Kx3oA0sHi6KiomzJe8x11DX95MmTtmmi3pvvvPOOzZx/8803BDkIGRq3BN0IZYxRhDLGJ5LT+Ewdz20F9ZRhCrhVGqsv9ZobrSycvqzrKITmWCvAVsl3hw4dbCZPy1Q+q27eVatW9btNnbNYmd+vvvrKloIrK6cgPdjUGE3Px/ldQY26P6sZVvHixb3rKbOuoFsBS6pUf//P88PgBjboQvjRlAY1+dPBpcyZM9v3jQJuHbnTASpVSej9ohJwHazSmQGGDBkSbRtPP/20DdQdTtm5+ieou7+OBu7evTtWycy7775rzxPeuHHjOKdGPPTQQ3YaSEwa+xrfamSo6Rrad+1vUjooBgAAACREUINuNVVS12KdZ7hfv342iFCmWhk5Bd0q354/f77p3bu3zdSpdFyn6VI5aiDq9r1161YblChoVZYvFL7QHz58ONp8WnVB10UHEJYvX+69XQGIspV6HoA//s577VCQ7RtMB+I75vxR4O1v6sSrr75qL3Fxytn9Ubd/ZdOViSeTCAAAgOQghceNSckIGs0rUPbzxIkTZLoRcpRBV2k6QTdCEeMToY4xilDG+ERyHJ/n/oq9zp49azJlyhR65+kGAAAAACDcEXQnEs3NDnRR4ykAAAAAQPIT1Dnd4URN0QLJly/fbd0XAAAAAEBoIOhOJL4dyAEAAAAAEMrLAQAAAABwCUE3AAAAAAAuIegGAAAAAMAlBN0AAAAAALiEoBsAAAAAAJcQdAMAAAAA4BKCbgAAAAAAXELQDQAAAACASwi6AQAAAABwCUE3AAAAAAAuIegGAAAAAMAlBN0AAAAAALiEoBsAAAAAAJcQdAMAAAAA4BKCbgAAAAAAXELQDQAAAACASwi6AQAAAABwCUE3wsZ3331nWrZsafLmzWtSpEhhPvvss2jLdZu/y7hx4+zy5cuXB1xn/fr1AR/3mWeeMcWKFTNp06Y1OXLkMK1atTI//fRTtHUOHDhgWrRoYdKlS2dy5sxpBgwYYKKiorzLAz320aNHE/11AgAAAHD7JPmge9iwYaZSpUrB3g2EgIsXL5qKFSuaKVOm+F1+5MiRaJd3333XBrYPP/ywXV6zZs1Y6zz99NOmSJEipmrVqgEft0qVKmb69Olm165d5uuvvzYej8c0btzYXL9+3S7XTwXcV69eNatXrzbvvfeemTFjhhk6dGisbe3evTva4ytABwAAAJB0BT3oViavd+/epmjRoiZNmjSmQIECNlu5dOlSE0527Nhhg7vChQvbQO+1116Ltc758+dNnz59TKFChWzWVEFgXBlWRNesWTMzcuRI06ZNG78vTe7cuaNd5s+fb+rVq2fHntxxxx3RlmfPnt2u8+STT9q/WSDdunUztWvXtn/be+65x+7DwYMHzf79++3yb775xuzcudN88MEH9gCR9vOVV16xBwcUiPtSkO27DylTBv0tCgAAAOAWpDJBpKCkVq1aJkuWLLbEt3z58ubatWs2W9izZ89YJbpJWWRkpA3uHnnkEfPCCy/4XUdZ1e3bt5uZM2faEmkFaQ0bNrQBW758+RL0ePeOXmqiUqU3ycH+MS0SfJ9jx46Zr776ymadA/n888/NyZMnbdCdkGy7st7KjusAkqxZs8aO7Vy5cnnXa9Kkienevbs9GFO5cmXv7QrKr1y5YsqVK2erOPT+AAAAAJB0BTWN1qNHD5tBXLdunc0ClyxZ0pQtW9b07dvXrF271jsXVnNkM2TIYDJlymQeffRRGzAFUrduXZst9tW6dWvTuXNn73VlJJWNfOKJJ+x2lVlWgPXHH394H6tChQpmw4YN3vuoHFgHB3RA4O6777brNG3a1JYAx0e1atXsgYV27drZjH5Mly5dMh9//LEZO3aszZoWL17cBl36OXXq1Hg9BuJPwXbGjBnNQw89FHCdadOm2eA4f/78N93em2++aceELgsXLjSLFy+2mXOnmsM34BbnujNnO0+ePOatt96yY0AXBeway5s2beLPCgAAACRhQct0nzp1yixatMiMGjXKpE8fOyOrAPfGjRveIHjFihW28ZQy4G3btrWNp27FpEmTzKuvvmpeeukl+3vHjh1tOXeXLl1scDxo0CAblCsT6ZQWK1s9fvx4m4lW2e/jjz9u+vfvb2bNmmVulZ6b5v7eeeed0W5XmfmqVasC3k9ZUV0c586dsz/TpPSYiAiPSQ5UHRHoNQ20TAF1+/btTUREhN91fv/9d3uAZfbs2QG34UsHgxQkK4ieOHGirWjQmNXfU+NY87x9t+P87uyjqiCcMnfnIM2ePXvMhAkT7AGfcOE87/i8psDtxvhEqGOMIpQxPpEcx+e1eG4vaEG3AgoFIqVLlw64juZ1b9u2zezbt89bqvv+++/bbLjmOisw+buaN29uu06LGlopm6ztKVgSBd01atSwWXXNrXVeVGUj1alaevXqZUaMGGESg7KuejzN9VUmXZnQDz/80JYmK9sdyOjRo83w4cNj3T6k8g2TLt2fjbzC3YIFC/zevnHjRpM6depYt+tAys8//2zLuwPdd+7cufZvkipVqoDrBKKqCh2QUaWCqhY0V/+XX36Jth2nWkPvg0Db15xyPYeEPn5SoEoAIFQxPhHqGKMIZYxPJKfxGRkZGdpBtwLum1E3aAXbTsAtZcqUsVlwLbuVoFvl4zFLfTXvNuZtx48f9wbdOt2TE3A7JcFanliUQVemXfO3lYFVUy5lYxV4BTJ48GBbju+b6dbrNXJzShOVOsIkB9uHNQnYVVwHV2JS+bZeW1VNBBqbmnevv8WDDz6Y4P1R5YEqITRW9fj6/f/9v/9nO6A73cjfeecdO12ia9eufqcbyOTJk+1BKX/PIanSgSt92DVq1MjvAREgmBifCHWMUYQyxieS4/g891eVccgG3SVKlLBl24ndLE0BTsyA3l/a3/fFdsrH/d2m0mB/93HWic/Bg/hSQK+SZDXj0h9QQb1K6X3LjmNSwOYvaLtyI4WJuh6443Y4cf4uFy5csJljhzqIK6udLVs2U7BgQXubXlcF3SrbDvSGU4WFqivUlTzmOocOHTINGjSwFRfVq1c3e/futVlxnSJM5+hWWfqYMWPstAB14df9FTQrAFcQrzn7KkF/+eWXbdCvqROibvZqvqYqjsuXL9ugfNmyZbbzeTgGp3pO4fi8EB4Ynwh1jFGEMsYnktP4TB3PbQWtkZoCITWp0mmTFGTGdObMGVtmrcBJF4c6eWuZghh/FPj4NjfTPGl1BE9KNMddAffp06ftvGLNa8fNqfGdOoE73cBVAaDffc+HPWfOHHugRBUEgWi+t+b3+5v6oAM4Ope2U0qiOdsrV660gbWmAeggicrSdT5uJ6utqoUvv/zS/tQUApWeq1+A79QEnTqsX79+ttqiTp06ZuvWrWbJkiU2wAcAAACQdAX1lGEKuHVKJGUMFYCo5FuNpZT61xxrBdgKQjp06GAzgVqmjucKSlSq60/9+vVtsKXTQSlzrKZWCtKDTUGVno/zuzKmW7ZssZlOZ862AmwFhKVKlbIZ2wEDBtjALyGnrHL8MLiBnROcnKiR2c0qD5S91iUuap4WiDrf+z6GTu0WnznX6pAf13oDBw60FwAAAADhJainDFPZtE6JVK9ePZvl07mJVWev8l4F3Srfnj9/vsmaNattSKVzVus+KucNRCW8nTp1splEBedaX9sPtsOHD3uzsMrEqwu6fte5uR1nz561JccKtLX/999/vw3EKcMFAAAAgKQphScxJyUj6DRnOXPmzObEiRPJLtON0KfyfGX8VY7PwSSEGsYnQh1jFKGM8YnkOD7P/RV7KXmqJskhmekGAAAAACCcEXQnEs3NDnRRoy0AAAAAQPIT1EZq4URN0QLRebcBAAAAAMkPQXcicTqQAwAAAADgoLwcAAAAAACXEHQDAAAAAOASgm4AAAAAAFxC0A0AAAAAgEsIugEAAAAAcAlBNwAAAAAALiHoBgAAAADAJQTdAAAAAAC4hKAbAAAAAACXEHQDAAAAAOASgm4AAAAAAFxC0A0AAAAAgEsIugEAAAAAcAlBNwAAAAAALiHoBgAAAADAJQTdAAAAAAC4hKAbAAAAAACXEHQDAAAAAOASgm4AAAAAAFxC0A0AAAAAgEsIugEAAAAAcAlBNwAAAAAALknl1oYRHB6Px/48f/68SZ06NX8GhJRr166ZyMhIc+7cOcYnQg7jE6GOMYpQxvhEKHNrfGp7vjFYIATdYebkyZP2Z5EiRYK9KwAAAAAQ9pTwzJw5c8DlBN1hJlu2bPbngQMH4vzDA8Ggo4EFChQwBw8eNJkyZeKPgJDC+ESoY4wilDE+kRzHp8fjsQF33rx541yPoDvMpEz55zR9BdwENQhVGpuMT4QqxidCHWMUoYzxieQ2PjPHI9FJIzUAAAAAAFxC0A0AAAAAgEsIusNMmjRpzMsvv2x/AqGG8YlQxvhEqGOMIpQxPhHK0gQ5RkrhuVl/cwAAAAAA8LeQ6QYAAAAAwCUE3QAAAAAAuISgGwAAAAAAlxB0h5kpU6aYwoULmzvvvNPce++9Zt26dcHeJYS5YcOGmRQpUkS7lC5d2rv88uXLpmfPniZ79uwmQ4YM5uGHHzbHjh2Lto0DBw6YFi1amHTp0pmcOXOaAQMGmKioqCA8GyR13333nWnZsqXJmzevHYufffZZtOVqYzJ06FCTJ08ekzZtWtOwYUPzyy+/RFvn1KlTpkOHDvY8nlmyZDFPPfWUuXDhQrR1fvzxR/PAAw/Yz9oCBQqYsWPH3pbnh/Afo507d471mdq0adNo6zBG4YbRo0ebatWqmYwZM9r/xa1btza7d++Otk5i/U9fvny5ueeee2xTq+LFi5sZM2bwR8Utj8+6devG+vx89tlnQ2J8EnSHkblz55q+ffvaznybNm0yFStWNE2aNDHHjx8P9q4hzJUtW9YcOXLEe1m1apV32QsvvGC++OILM2/ePLNixQpz+PBh89BDD3mXX79+3X74Xb161axevdq899579sNNgRGQUBcvXrSffToA6Y+C49dff9289dZb5ocffjDp06e3n5P6IulQwL1jxw6zePFi8+WXX9ogqVu3bt7l586dM40bNzaFChUyGzduNOPGjbMHn/73f/+XPxhueYyKgmzfz9QPP/ww2nLGKNyg/9EKqNeuXWs//65du2Y/6zRmE/N/+r59++w69erVM1u2bDF9+vQxTz/9tPn666/5w+KWxqd07do12uen70HxoI5PdS9HeKhevbqnZ8+e3uvXr1/35M2b1zN69Oig7hfC28svv+ypWLGi32VnzpzxpE6d2jNv3jzvbbt27dIZEzxr1qyx1xcsWOBJmTKl5+jRo951pk6d6smUKZPnypUrt+EZIFxpnH366afe6zdu3PDkzp3bM27cuGhjNE2aNJ4PP/zQXt+5c6e93/r1673rLFy40JMiRQrPoUOH7PU333zTkzVr1mjjc9CgQZ5SpUrdpmeGcB2j0qlTJ0+rVq0C3ocxitvl+PHjdoyuWLEiUf+nDxw40FO2bNloj9W2bVtPkyZNbtMzQziOT6lTp47n+eef9wQSzPFJpjtM6IiNMi4qlXSkTJnSXl+zZk1Q9w3hT+W5KpUsWrSozcCodEc0JnUk0ndcqvS8YMGC3nGpn+XLlze5cuXyrqPMo7KJyjYCiUVHr48ePRptPGbOnNlOxfEdjyopr1q1qncdra/PU2XGnXVq165t7rjjjmhjVmVup0+f5g+GW6bSRpU9lipVynTv3t2cPHnSu4wxitvl7Nmz9me2bNkS9X+61vHdhrMO31dxK+PTMWvWLHPXXXeZcuXKmcGDB5vIyEjvsmCOz1S3dG+EjBMnTtiSCd9BJLr+008/BW2/EP4UsKg0R18OVcYzfPhwO9d1+/btNsBRYKIgJua41DLRT3/j1lkGJBZnPPkbb77jUcGOr1SpUtl/6r7rFClSJOCYzZo1K380/G0qLVe5rsbYr7/+al588UXTrFkz+4UvIiKCMYrb4saNG7astlatWjZ4kcT6nx5oHQU+ly5dsv02gISOT3nsscfs1C8lgtR7ZdCgQfaA+CeffBL08UnQDeCW6Mugo0KFCjYI1wfeRx99xD9OAEigdu3aeX9XRkafq8WKFbPZ7wYNGvB64rbQ3FkdPPft0QKE+vjs5tN/RZ+fapqqz00dwNTnaDBRXh4mVEahI+AxO0jqeu7cuYO2X0h+dAS8ZMmSZs+ePXbsaerDmTNnAo5L/fQ3bp1lQGJxxlNcn5P6GbP5pLqaqls0YxbBoGk7+h+vz1TGKG6HXr162SaSy5YtM/nz5/fenlj/0wOtozNGkOXG3x2f/igRJL6fn8EanwTdYULlPlWqVDFLly6NVnqh6zVq1AjqviF50amVdERRRxc1JlOnTh1tXKrMR3O+nXGpn9u2bYsW6KgrpT7cypQpE5TngPCkcl39M/UdjyoX01xt3/GoL5Sau+j49ttv7eep889b66ijueY2+o5ZTbGgtByJ7ffff7dzuvWZyhiFm9TbTwHNp59+aj/3Yk6jSaz/6VrHdxvOOnxfxa2MT3/UfVx8Pz+DNj5vqQ0bQsqcOXNsF94ZM2bY7qbdunXzZMmSJVqHPiCx9evXz7N8+XLPvn37PN9//72nYcOGnrvuust2lZRnn33WU7BgQc+3337r2bBhg6dGjRr24oiKivKUK1fO07hxY8+WLVs8ixYt8uTIkcMzePBg/lhIsPPnz3s2b95sL/oXN3HiRPv7b7/9ZpePGTPGfi7Onz/f8+OPP9ou0UWKFPFcunTJu42mTZt6Kleu7Pnhhx88q1at8pQoUcLTvn1773J18M2VK5enY8eOnu3bt9vP3nTp0nn++9//8hfDLY1RLevfv7/tBK3P1CVLlnjuueceOwYvX77MGIWrunfv7smcObP9n37kyBHvJTIy0rtOYvxP37t3r/3MHDBggO1+PmXKFE9ERIRdF/i743PPnj2eESNG2HGpz0/9ny9atKindu3aITE+CbrDzOTJk+2H4R133GFPIbZ27dpg7xLCnE6jkCdPHjvm8uXLZ6/rg8+hYKZHjx72FEv6EGvTpo39kPS1f/9+T7NmzTxp06a1AbsC+WvXrgXh2SCpW7ZsmQ1kYl50GibntGEvvfSSDZp1kLJBgwae3bt3R9vGyZMnbZCdIUMGexqRJ5980gZDvrZu3eq5//777TY07hXMA7c6RvXlUV8G9SVQp2YqVKiQp2vXrrEOnjNG4QZ/41KX6dOnJ/r/dL0PKlWqZL87KDDyfQzg74zPAwcO2AA7W7Zs9n9z8eLFbeB89uzZkBifKf56EgAAAAAAIJExpxsAAAAAAJcQdAMAAAAA4BKCbgAAAAAAXELQDQAAAACASwi6AQAAAABwCUE3AAAAAAAuIegGAAAAAMAlBN0AAAAAALiEoBsAAIS1kydPmpw5c5r9+/e7sv3ChQub1157Ld7r79y50+TPn99cvHjRlf0BAIQWgm4AAEJI586dTevWrU2oUuCaIkUKs2XLFpNUjBo1yrRq1coGx74+/vhjU79+fZM1a1aTNm1aU6pUKdOlSxezefPmBG1//fr1plu3bvFev0yZMua+++4zEydOTNDjAACSJoJuAAAQL1evXk1yr1RkZKSZNm2aeeqpp6LdPmjQINO2bVtTqVIl8/nnn5vdu3eb2bNnm6JFi5rBgwcn6DFy5Mhh0qVLl6D7PPnkk2bq1KkmKioqQfcDACQ9BN0AAISwunXrmt69e5s+ffrYjGyuXLnM22+/bUuTFbhlzJjRFC9e3CxcuNB7n+XLl9ts9FdffWUqVKhg7rzzTptZ3b59e6xMb9myZU2aNGlsFnjChAnRluu2V155xTzxxBMmU6ZMNptbpEgRu6xy5cr2MbR/Tra3UaNG5q677jKZM2c2derUMZs2bYq2Pa3/zjvvmDZt2tggtUSJEjbg9bVjxw7zj3/8wz6entsDDzxgfv31V+9y3f/uu++2z6l06dLmzTffjPP1W7BggX1+ev6OtWvXmrFjx9pMsy56jIIFC5oqVaqYIUOGRHst9djKkut1z5Ahg6lWrZpZsmRJnOXl8Xmeeq1OnTplVqxYEef+AwCSPoJuAABC3HvvvWeD2XXr1tkAvHv37uaRRx4xNWvWtIFt48aNTceOHW1W19eAAQNsIK2AWNnYli1bmmvXrtllGzduNI8++qhp166d2bZtmxk2bJh56aWXzIwZM6JtY/z48aZixYq25FrLtQ+iwPPIkSPmk08+sdfPnz9vOnXqZFatWmWDWgWazZs3t7f7Gj58uH3cH3/80S7v0KGDDT7l0KFDpnbt2jZI/vbbb+0+qtzbyQbPmjXLDB061JaL79q1y7z66qt2n/T6BLJy5UobTPv68MMPbQDdo0cPv/dR0Oy4cOGC3c+lS5fa16Bp06b2dTxw4ECcf7O4nqfccccdNsuu/QMAhDkPAAAIGZ06dfK0atXKe71OnTqe+++/33s9KirKkz59ek/Hjh29tx05csSjf+lr1qyx15ctW2avz5kzx7vOyZMnPWnTpvXMnTvXXn/sscc8jRo1ivbYAwYM8JQpU8Z7vVChQp7WrVtHW2ffvn1225s3b47zeVy/ft2TMWNGzxdffOG9TfcbMmSI9/qFCxfsbQsXLrTXBw8e7ClSpIjn6tWrfrdZrFgxz+zZs6Pd9sorr3hq1KgRcD/0Wnbp0iXabU2bNvVUqFAh2m0TJkywr6tzOXPmTMBtli1b1jN58uRor9OkSZPi/Twdbdq08XTu3Dng4wAAwgOZbgAAQpxKxB0REREme/bspnz58t7bVPosx48fj3a/GjVqeH/Pli2bbRSmDLHoZ61ataKtr+u//PKLuX79uve2qlWrxmsfjx07Zrp27Woz3CovV3m4ssQxM8K+zyV9+vR2PWe/1ZxNpd6pU6eOtX2V06vUW3OzlaV2LiNHjoxWfh7TpUuXbCn6zSijrsf/73//ax/rz9j5z0x3//79bUl7lixZ7GPqtbtZpjuu5+lQ87aY1QkAgPCTKtg7AAAA4hYzCFX5s+9tTjn0jRs3Ev2lVMAYHyot16m5/vOf/5hChQrZEnEF/TGbr/l7Ls5+KwgNRMGvaD77vffeG22ZDkQEorL806dPR7tNBwZUBq9Se2d/FFDr8vvvv0dbVwH34sWLbZm95s5rH//5z3/etKlcXM/ToXLzYsWKxbkdAEDSR6YbAIAwpbnVDgWeP//8s83Yin5+//330dbX9ZIlS8YZxGousvhmw537Pvfcc3b+stOc7cSJEwnaX2WHNcfZmXfuS9n8vHnzmr1799rg1/fiNHfzRw3fdF5sX+3bt7dB/M2asDnPS6dxU1M0VRfkzp070c73rcZ22j8AQHgj0w0AQJgaMWKELUVXwPrvf//bZn2dc4D369fPduJWd3KdOmvNmjXmjTfeuGkgmjNnTpvtXbRokcmfP78t3VY5ubLHM2fOtOXo586ds03c4spc+9OrVy8zefJk29xNp+3SdnXgoHr16rY0Xs3JFNjrdjU0u3LlitmwYYM9oNC3b1+/22zSpIndltZR93dRBl7PX5fffvvNPPTQQ6ZAgQK2MZxOL6asdMqUf+Yl9LzULE7N03S7GrclRkWBAnc1jmvYsOEtbwsAENrIdAMAEKbGjBljnn/+edu9++jRo+aLL77wZqrvuece89FHH5k5c+aYcuXK2a7gCtKV1Y1LqlSpzOuvv27nPivzrNNpiYJVBbbarjqpKzhWgJ4QOkCgruXKQuuUY9pvlZM7pdpPP/20PRXX9OnTbdZZ66jbelyZbq3nPFdfKhfXebnVkVynKFNwrY7wCqh1AEJzsEWnFFOwrk7xCrwVxGt7t0od1NV1XqX4AIDwlkLd1IK9EwAAIPHoPN316tWzQbDmKSd3Ol+5Mu8q53Yy2MGk+eAK8hX0x2xmBwAIP5SXAwCAsNaiRQvblV3l3CojDzZ1Pn/xxRcJuAEgmSDTDQBAmCHTDQBA6CDoBgAAAADAJcGf2AQAAAAAQJgi6AYAAAAAwCUE3QAAAAAAuISgGwAAAAAAlxB0AwAAAADgEoJuAAAAAABcQtANAAAAAIBLCLoBAAAAAHAJQTcAAAAAAMYd/x8x6YD7FF5zkQAAAABJRU5ErkJggg==" }, "metadata": {}, "output_type": "display_data", @@ -1536,48 +1449,36 @@ "text": [ "\n", "[特征重要性排名 - Gain]\n", - "ebitda_rank 14994.629439\n", - "bbi_ratio_factor 1948.020045\n", - "cs_rank_turnover_rate 1686.329153\n", - "std_return_90 1566.943976\n", - "return_10 1430.825613\n", - "std_return_5 1242.399894\n", - "ma_ratio 979.636333\n", - "high_low_ratio 932.793097\n", - "volume_change_rate 652.408669\n", - "vol_ratio 651.873589\n", - "cs_rank_volume_ratio 649.430382\n", - "vol_ma20 649.122400\n", - "turnover_rate_mean_5 615.645898\n", - "ma20 535.948738\n", - "return_20 452.979679\n", - "market_cap_rank 407.870511\n", - "return_diff 304.914024\n", - "ebit_rank 294.325396\n", - "profit_to_market_cap 287.904060\n", - "vol_std_5 243.944097\n", - "operate_profit_to_market_cap 232.366538\n", - "ma10 201.935446\n", - "volatility_20 169.372244\n", - "volatility_5 161.736089\n", - "ma5 111.549055\n", - "n_income_rank 79.050783\n", - "vol_ma5 73.284933\n", - "operate_profit_rank 57.328938\n", - "total_profit_rank 35.760864\n", - "n_cashflow_act_rank 34.917162\n", - "money_cap_rank 32.511166\n", - "total_liab_rank 24.127689\n", - "cashflow_to_market_cap 20.326702\n", - "turnover_deviation 0.000000\n", + "return_5_rank 2332.348582\n", + "return_5 1950.969372\n", + "turnover_rank 1887.661314\n", + "return_10 1342.515739\n", + "turnover_rate_std_20 1311.361422\n", + "ma_ratio_5_20 1123.527241\n", + "bbi_ratio 1071.855236\n", + "high_low_ratio 994.522432\n", + "bias_10 742.095194\n", + "std_return_5 741.347398\n", + "volume_change_rate 739.034219\n", + "return_20 597.878394\n", + "volume_ratio_5_20 595.380527\n", + "std_return_20 515.137529\n", + "market_cap_rank 466.798819\n", + "ma_20 418.790501\n", + "volatility_ratio 390.093624\n", + "return_diff_5_10 354.139443\n", + "turnover_rate_mean_5 351.775202\n", + "turnover_deviation 177.305289\n", + "ma_5 150.850527\n", + "volatility_5 148.218010\n", + "volatility_20 147.523706\n", "dtype: float64\n", "\n", - "[低重要性特征] 以下1个特征重要性为0,可考虑删除:\n", - " - turnover_deviation\n" + "所有特征都有一定重要性\n" ] } ], - "execution_count": 18 + "execution_count": 36 } ], "metadata": { diff --git a/tests/test_stk_limit.py b/tests/test_stk_limit.py new file mode 100644 index 0000000..240ad43 --- /dev/null +++ b/tests/test_stk_limit.py @@ -0,0 +1,246 @@ +"""Tests for stock limit price API wrapper.""" + +import pytest +import pandas as pd +from unittest.mock import patch, MagicMock + +from src.data.api_wrappers.api_stk_limit import ( + get_stk_limit, + sync_stk_limit, + preview_stk_limit_sync, + StkLimitSync, +) + + +class TestStkLimit: + """Test suite for stk_limit API wrapper.""" + + @patch("src.data.api_wrappers.api_stk_limit.TushareClient") + def test_get_by_date(self, mock_client_class): + """Test fetching data by trade_date.""" + # Setup mock + mock_client = MagicMock() + mock_client_class.return_value = mock_client + mock_client.query.return_value = pd.DataFrame( + { + "ts_code": ["000001.SZ", "000002.SZ"], + "trade_date": ["20240625", "20240625"], + "pre_close": [10.0, 20.0], + "up_limit": [11.0, 22.0], + "down_limit": [9.0, 18.0], + } + ) + + # Test + result = get_stk_limit(trade_date="20240625") + + # Assert + assert not result.empty + assert len(result) == 2 + assert "ts_code" in result.columns + assert "trade_date" in result.columns + assert "up_limit" in result.columns + assert "down_limit" in result.columns + mock_client.query.assert_called_once_with("stk_limit", trade_date="20240625") + + @patch("src.data.api_wrappers.api_stk_limit.TushareClient") + def test_get_by_date_range(self, mock_client_class): + """Test fetching data by date range.""" + # Setup mock + mock_client = MagicMock() + mock_client_class.return_value = mock_client + mock_client.query.return_value = pd.DataFrame( + { + "ts_code": ["000001.SZ", "000001.SZ"], + "trade_date": ["20240624", "20240625"], + "pre_close": [10.0, 10.5], + "up_limit": [11.0, 11.55], + "down_limit": [9.0, 9.45], + } + ) + + # Test + result = get_stk_limit(start_date="20240624", end_date="20240625") + + # Assert + assert not result.empty + assert len(result) == 2 + mock_client.query.assert_called_once_with( + "stk_limit", start_date="20240624", end_date="20240625" + ) + + @patch("src.data.api_wrappers.api_stk_limit.TushareClient") + def test_get_by_stock_code(self, mock_client_class): + """Test fetching data by stock code.""" + # Setup mock + mock_client = MagicMock() + mock_client_class.return_value = mock_client + mock_client.query.return_value = pd.DataFrame( + { + "ts_code": ["000001.SZ"], + "trade_date": ["20240625"], + "pre_close": [10.0], + "up_limit": [11.0], + "down_limit": [9.0], + } + ) + + # Test + result = get_stk_limit(ts_code="000001.SZ", trade_date="20240625") + + # Assert + assert not result.empty + assert len(result) == 1 + assert result.iloc[0]["ts_code"] == "000001.SZ" + mock_client.query.assert_called_once_with( + "stk_limit", trade_date="20240625", ts_code="000001.SZ" + ) + + @patch("src.data.api_wrappers.api_stk_limit.TushareClient") + def test_empty_response(self, mock_client_class): + """Test handling empty response.""" + # Setup mock + mock_client = MagicMock() + mock_client_class.return_value = mock_client + mock_client.query.return_value = pd.DataFrame() + + # Test + result = get_stk_limit(trade_date="20240625") + + # Assert + assert result.empty + + @patch("src.data.api_wrappers.api_stk_limit.TushareClient") + def test_shared_client(self, mock_client_class): + """Test passing shared client for rate limiting.""" + # Setup mock + shared_client = MagicMock() + shared_client.query.return_value = pd.DataFrame( + { + "ts_code": ["000001.SZ"], + "trade_date": ["20240625"], + "pre_close": [10.0], + "up_limit": [11.0], + "down_limit": [9.0], + } + ) + + # Test + result = get_stk_limit(trade_date="20240625", client=shared_client) + + # Assert + assert not result.empty + shared_client.query.assert_called_once() + # Verify new client was not created + mock_client_class.assert_not_called() + + +class TestStkLimitSync: + """Test suite for StkLimitSync class.""" + + @patch("src.data.api_wrappers.api_stk_limit.TushareClient") + @patch("src.data.api_wrappers.base_sync.Storage") + @patch("src.data.api_wrappers.base_sync.sync_trade_cal_cache") + def test_fetch_single_date( + self, mock_sync_cal, mock_storage_class, mock_client_class + ): + """Test fetch_single_date method.""" + # Setup mock + mock_client = MagicMock() + mock_client_class.return_value = mock_client + mock_client.query.return_value = pd.DataFrame( + { + "ts_code": ["000001.SZ", "000002.SZ"], + "trade_date": ["20240625", "20240625"], + "pre_close": [10.0, 20.0], + "up_limit": [11.0, 22.0], + "down_limit": [9.0, 18.0], + } + ) + + mock_storage = MagicMock() + mock_storage_class.return_value = mock_storage + mock_storage.exists.return_value = True + mock_storage.load.return_value = pd.DataFrame() + + # Test + sync = StkLimitSync() + result = sync.fetch_single_date("20240625") + + # Assert + assert not result.empty + assert len(result) == 2 + mock_client.query.assert_called_once_with("stk_limit", trade_date="20240625") + + def test_table_schema(self): + """Test table schema definition.""" + sync = StkLimitSync() + + # Assert table configuration + assert sync.table_name == "stk_limit" + assert "ts_code" in sync.TABLE_SCHEMA + assert "trade_date" in sync.TABLE_SCHEMA + assert "pre_close" in sync.TABLE_SCHEMA + assert "up_limit" in sync.TABLE_SCHEMA + assert "down_limit" in sync.TABLE_SCHEMA + assert sync.PRIMARY_KEY == ("ts_code", "trade_date") + + +class TestSyncFunctions: + """Test suite for sync convenience functions.""" + + @patch.object(StkLimitSync, "sync_all") + def test_sync_stk_limit(self, mock_sync_all): + """Test sync_stk_limit convenience function.""" + # Setup mock + mock_sync_all.return_value = pd.DataFrame( + { + "ts_code": ["000001.SZ"], + "trade_date": ["20240625"], + "up_limit": [11.0], + "down_limit": [9.0], + } + ) + + # Test + result = sync_stk_limit(force_full=True) + + # Assert + assert not result.empty + mock_sync_all.assert_called_once_with( + force_full=True, + start_date=None, + end_date=None, + dry_run=False, + ) + + @patch.object(StkLimitSync, "preview_sync") + def test_preview_stk_limit_sync(self, mock_preview): + """Test preview_stk_limit_sync convenience function.""" + # Setup mock + mock_preview.return_value = { + "sync_needed": True, + "date_count": 10, + "start_date": "20240601", + "end_date": "20240610", + "estimated_records": 5000, + "sample_data": pd.DataFrame(), + "mode": "incremental", + } + + # Test + result = preview_stk_limit_sync() + + # Assert + assert result["sync_needed"] is True + assert result["mode"] == "incremental" + mock_preview.assert_called_once_with( + force_full=False, + start_date=None, + end_date=None, + sample_size=3, + ) + + +if __name__ == "__main__": + pytest.main([__file__, "-v"])