From 10010fc56fdf5ca1434482847adc4ebd7a3d1909 Mon Sep 17 00:00:00 2001 From: zhanglei Date: Tue, 12 May 2026 16:12:51 +0800 Subject: [PATCH] =?UTF-8?q?vue=20=E5=92=8C=20main=20=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ak_share.py | 427 +++++++++++++++++++++++++++++++++++++++++++++++++ data_engine.py | 26 +++ stock_data.db | Bin 0 -> 151552 bytes 3 files changed, 453 insertions(+) create mode 100644 ak_share.py create mode 100644 data_engine.py create mode 100644 stock_data.db diff --git a/ak_share.py b/ak_share.py new file mode 100644 index 0000000..b4a31a5 --- /dev/null +++ b/ak_share.py @@ -0,0 +1,427 @@ +# ========================================= +# 工业级AI选股系统(最终整合版) +# 指数择时 + 动态仓位 + 回测 + 调参 +# ========================================= + +import sqlite3 +import akshare as ak +import pandas as pd + +DB_PATH = "stock_data.db" + +# ========================================= +# 全局参数配置 +# ========================================= +CONFIG = { + + # ===== 数据 ===== + "START_DATE": "20230101", + "END_DATE": "20240401", + + # ===== 均线 ===== + "MA_SHORT": 5, + "MA_MID": 20, + "MA_LONG": 60, + + # ===== 特征 ===== + "RETURN_WINDOW": 3, + "VOL_WINDOW": 5, + "VOLATILITY_WINDOW": 10, + + # ===== 权重 ===== + "W_MOMENTUM": 0.4, + "W_TREND": 0.3, + "W_VOLUME": 0.2, + "W_VOLATILITY": -0.1, + + # ===== 策略 ===== + "RETURN_THRESH": 0.02, + "VOL_THRESH": 1.2, + + "HOLD_DAYS": 3, + "STOP_LOSS": -0.05, + "TAKE_PROFIT": 0.1, + + # ===== 成本 ===== + "FEE": 0.001, + "SLIPPAGE": 0.001, + + # ===== Walk Forward ===== + "TRAIN_WINDOW": 60, + "TEST_WINDOW": 20, + + # ===== 指数 ===== + "INDEX_LIST": { + "hs300": "000300", + "zz500": "000905", + "cyb": "399006", + } +} + +# ========================= +# 数据库 +# ========================= +def init_db(): + conn = sqlite3.connect(DB_PATH) + conn.execute(""" + CREATE TABLE IF NOT EXISTS stock_daily ( + code TEXT, + date TEXT, + open REAL, + close REAL, + high REAL, + low REAL, + volume REAL, + PRIMARY KEY (code, date) + ) + """) + conn.close() + + +def load_from_db(code): + conn = sqlite3.connect(DB_PATH) + df = pd.read_sql_query( + f"SELECT * FROM stock_daily WHERE code='{code}'", conn + ) + conn.close() + return df.sort_values("date") + + +def save_to_db(df, code): + conn = sqlite3.connect(DB_PATH) + df['code'] = code + df.to_sql("stock_daily", conn, if_exists="append", index=False) + conn.close() + +# ========================= +# 数据获取 +# ========================= +def fetch_data(code): + try: + df = ak.stock_zh_a_hist( + symbol=code, + period="daily", + start_date=CONFIG["START_DATE"], + end_date=CONFIG["END_DATE"], + adjust="qfq" + ) + except: + df = ak.stock_zh_a_daily(symbol=code) + + if df is None or df.empty: + return None + + df = df.rename(columns={ + "日期": "date", + "开盘": "open", + "收盘": "close", + "最高": "high", + "最低": "low", + "成交量": "volume" + }) + + if "date" not in df.columns: + return None + + return df[["date", "open", "close", "high", "low", "volume"]] + + +def get_data(code): + try: + df = load_from_db(code) + if len(df) > 30: + return df + except: + pass + + df = fetch_data(code) + if df is not None: + save_to_db(df, code) + return df + +# ========================= +# 特征工程 +# ========================= +def add_features(df): + + df['return_n'] = df['close'].pct_change(CONFIG["RETURN_WINDOW"]) + + df['ma_short'] = df['close'].rolling(CONFIG["MA_SHORT"]).mean() + df['ma_mid'] = df['close'].rolling(CONFIG["MA_MID"]).mean() + df['ma_long'] = df['close'].rolling(CONFIG["MA_LONG"]).mean() + + df['vol_ratio'] = df['volume'] / df['volume'].rolling(CONFIG["VOL_WINDOW"]).mean() + df['volatility'] = df['close'].pct_change().rolling(CONFIG["VOLATILITY_WINDOW"]).std() + + df['trend'] = df['ma_mid'] > df['ma_long'] + + return df.dropna() + + +def score(df): + df['score'] = ( + CONFIG["W_MOMENTUM"] * df['return_n'] + + CONFIG["W_TREND"] * ((df['ma_short'] - df['ma_mid']) / df['ma_mid']) + + CONFIG["W_VOLUME"] * df['vol_ratio'] + + CONFIG["W_VOLATILITY"] * df['volatility'] + ) + return df + +# ========================= +# 指数模块 +# ========================= +def get_index_data(code): + try: + df = ak.index_zh_a_hist( + symbol=code, + period="daily", + start_date=CONFIG["START_DATE"], + end_date=CONFIG["END_DATE"] + ) + except: + return None + + if df is None or df.empty: + return None + + df = df.rename(columns={"日期": "date", "收盘": "close"}) + return df[['date', 'close']] + + +def index_trend(df): + ma20 = df['close'].rolling(CONFIG["MA_MID"]).mean() + ma60 = df['close'].rolling(CONFIG["MA_LONG"]).mean() + return ma20.iloc[-1] > ma60.iloc[-1] + + +def market_score(index_data): + score = 0 + + if index_trend(index_data["hs300"]): + score += 2 + else: + score -= 2 + + if index_trend(index_data["zz500"]): + score += 2 + + if index_trend(index_data["cyb"]): + score += 1 + + return score + + +def market_strategy(score): + if score >= 4: + return 0.7 + elif score >= 2: + return 0.4 + elif score >= 0: + return 0.2 + else: + return 0 + +# ========================= +# 交易函数 +# ========================= +def trade_return(prices): + if len(prices) == 0: + return 0 + + entry = prices[0] * (1 + CONFIG["SLIPPAGE"]) + ret = 0 + + for p in prices: + exit_price = p * (1 - CONFIG["SLIPPAGE"]) + r = (exit_price - entry) / entry + + if r <= CONFIG["STOP_LOSS"]: + ret = CONFIG["STOP_LOSS"] + break + elif r >= CONFIG["TAKE_PROFIT"]: + ret = CONFIG["TAKE_PROFIT"] + break + else: + ret = r + + return ret - CONFIG["FEE"] * 2 + +# ========================= +# 回测 +# ========================= +def backtest_real(df_all, params, position_ratio, init_cash=100000): + + cash = init_cash + equity = [] + + dates = sorted(df_all['date'].unique()) + + for i in range(len(dates) - params['hold_days']): + + today = dates[i] + + df_today = df_all[df_all['date'] <= today] + latest = df_today.groupby('code').tail(1) + + picks = latest[ + (latest['return_n'] > params['return_thresh']) & + (latest['vol_ratio'] > params['vol_thresh']) & + (latest['trend']) + ].sort_values('score', ascending=False).head(3) + + if len(picks) == 0 or position_ratio == 0: + equity.append(cash) + continue + + position = cash * position_ratio + per_stock = position / len(picks) + + profit = 0 + + for _, row in picks.iterrows(): + code = row['code'] + + prices = df_all[ + (df_all['code'] == code) & + (df_all['date'] >= today) + ].sort_values('date')['close'].values[:params['hold_days']] + + r = trade_return(prices) + profit += per_stock * r + + cash += profit + equity.append(cash) + + return equity + +# ========================= +# 调参 +# ========================= +def simple_grid(df): + best_score = -999 + best_params = None + + for r in [0.01, 0.02]: + for v in [1.1, 1.2]: + + params = { + "return_thresh": r, + "vol_thresh": v, + "hold_days": CONFIG["HOLD_DAYS"] + } + + equity = backtest_real(df, params, 0.4) + + if len(equity) < 10: + continue + + ret = (equity[-1] - equity[0]) / equity[0] + dd = calc_max_drawdown(equity) + + score = ret - dd + + if score > best_score: + best_score = score + best_params = params + + return best_params + +# ========================= +# 评估 +# ========================= +def calc_max_drawdown(equity): + peak = equity[0] + max_dd = 0 + + for x in equity: + if x > peak: + peak = x + dd = (peak - x) / peak + max_dd = max(max_dd, dd) + + return max_dd + +# ========================= +# Walk Forward(带指数) +# ========================= +def walk_forward(df_all, index_data): + + dates = sorted(df_all['date'].unique()) + + window = CONFIG["TRAIN_WINDOW"] + step = CONFIG["TEST_WINDOW"] + + final_equity = [] + + for start in range(0, len(dates) - window - step, step): + + train_dates = dates[start:start+window] + test_dates = dates[start+window:start+window+step] + + train_df = df_all[df_all['date'].isin(train_dates)] + test_df = df_all[df_all['date'].isin(test_dates)] + + best_params = simple_grid(train_df) + + # ===== 指数决定仓位 ===== + score = market_score(index_data) + position_ratio = market_strategy(score) + + if position_ratio == 0: + continue + + equity = backtest_real(test_df, best_params, position_ratio) + + if len(final_equity) == 0: + final_equity = equity + else: + base = final_equity[-1] + equity = [base + (x - equity[0]) for x in equity] + final_equity.extend(equity) + + return final_equity + +# ========================= +# 主程序 +# ========================= +def main(): + + init_db() + + codes = ["000001", "000002", "600519", "600036", "601318"] + + all_data = [] + + for code in codes: + df = get_data(code) + if df is None: + continue + + df['code'] = code + df = add_features(df) + df = score(df) + all_data.append(df) + + df_all = pd.concat(all_data) + + # ===== 指数一次性获取 ===== + index_data = {} + for name, code in CONFIG["INDEX_LIST"].items(): + df = get_index_data(code) + if df is not None: + index_data[name] = df + + equity = walk_forward(df_all, index_data) + + print("\n===== 实盘级回测 =====") + print("最终资金:", round(equity[-1], 2)) + + ret = (equity[-1] - equity[0]) / equity[0] + dd = calc_max_drawdown(equity) + + print("总收益:", round(ret, 2)) + print("最大回撤:", round(dd, 2)) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/data_engine.py b/data_engine.py new file mode 100644 index 0000000..ecdb03a --- /dev/null +++ b/data_engine.py @@ -0,0 +1,26 @@ +import sqlite3 +import pandas as pd +import os + +DB_PATH = "stock_data.db" + + +def init_db(): + conn = sqlite3.connect(DB_PATH) + cursor = conn.cursor() + + cursor.execute(""" + CREATE TABLE IF NOT EXISTS stock_daily ( + code TEXT, + date TEXT, + open REAL, + close REAL, + high REAL, + low REAL, + volume REAL, + PRIMARY KEY (code, date) + ) + """) + + conn.commit() + conn.close() \ No newline at end of file diff --git a/stock_data.db b/stock_data.db new file mode 100644 index 0000000000000000000000000000000000000000..107f41ed3dd964d7a0c7f45202e4b0cf28e6f3a8 GIT binary patch literal 151552 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�H4RH1=mxx^^Awvc%Rolr5#ZHpl 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 qz{W|8c+m|GY`NOj^6+ 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