diff --git a/.env.example b/.env.example index 4a9bb9f..ed8deb6 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,5 @@ # Tushare API配置 -TUSHARE_TOKEN=your_tushare_token_here +TUSHARE_TOKEN=0ac4f86980bfed8a3ea9c4869e3d02263b12c4a46a7223432a62b56e # Volces API配置 VOLCES_MODEL_ID=your_model_id_here diff --git a/app/__init__.py b/app/__init__.py index c8e2d15..d771cde 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -14,6 +14,7 @@ app = FastAPI() ts.set_token(Config.TUSHARE_TOKEN) pro = ts.pro_api() + # Mount static files app.mount("/static", StaticFiles(directory=Config.STATIC_DIR), name="static") diff --git a/app/config.py b/app/config.py index 7ea0fc3..adb20d7 100644 --- a/app/config.py +++ b/app/config.py @@ -6,8 +6,9 @@ class Config: BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Tushare API配置 - TUSHARE_TOKEN = '90f8a141125e1decb952cd49032b7b8409a2d7fa370745f6c9f45c96' - + TUSHARE_TOKEN = '2876ea85cb005fb5fa17c809a98174f2d5aae8b1f830110a5ead6211' + # TUSHARE_TOKEN = '90f8a141125e1decb952cd49032b7b8409a2d7fa370745f6c9f45c96' + # 配置文件路径 CONFIG_FILE = os.path.join(BASE_DIR, "config.json") diff --git a/app/services/ai_analysis_service.py b/app/services/ai_analysis_service.py index 8f6b2ed..d2ec131 100644 --- a/app/services/ai_analysis_service.py +++ b/app/services/ai_analysis_service.py @@ -6,9 +6,9 @@ from app.config import Config class AIAnalysisService: def __init__(self): # 配置OpenAI客户端连接到Volces API - self.model = "" # Volces 模型接入点ID + self.model = "ep-20251113170010-6qdcp" # Volces 模型接入点ID self.client = OpenAI( - api_key = "", # 豆包大模型APIkey + api_key = "ec3ebae6-e131-4b1e-a5ae-30f70468e165", # 豆包大模型APIkey base_url = "https://ark.cn-beijing.volces.com/api/v3" ) # 创建AI分析结果缓存目录 @@ -399,7 +399,7 @@ class AIAnalysisService: xxx ] -请确保返回的是一个有效的JSON格式,数值使用数字而不是字符串(价格、市值等),文本分析使用字符串。分析要客观、专业、详细。""" +请确保返回的是一个有效的JSON格式,不要使用代码块格式,数值使用数字而不是字符串(价格、市值等),文本分析使用字符串。分析要客观、专业、详细。""" # 组合完整的提示词 prompt = data_section + analysis_requirements diff --git a/config.json b/config.json index f3dfc8e..4e5ae27 100644 --- a/config.json +++ b/config.json @@ -1,178 +1,22 @@ { "watchlist": { - "300059": { - "target_market_value": { - "min": 2500.0, - "max": 2800.0 - } - }, - "601318": { - "target_market_value": { - "min": 8000.0, - "max": 9500.0 - } - }, - "000963": { - "target_market_value": { - "min": 500.0, - "max": 650.0 - } - }, - "002415": { - "target_market_value": { - "min": 2000.0, - "max": 2200.0 - } - }, - "000423": { - "target_market_value": { - "min": 270.0, - "max": 330.0 - } - }, - "000538": { - "target_market_value": { - "min": 807.0, - "max": 1210.0 - } - }, - "600085": { - "target_market_value": { - "min": 336.0, - "max": 429.0 - } - }, - "002714": { - "target_market_value": { - "min": 1650.0, - "max": 2200.0 - } - }, - "002007": { - "target_market_value": { - "min": 240.0, - "max": 288.0 - } - }, - "600132": { - "target_market_value": { - "min": 220.0, - "max": 290.0 - } - }, - "002049": { - "target_market_value": { - "min": 360.0, - "max": 480.0 - } - }, - "600436": { - "target_market_value": { - "min": 960.0, - "max": 1080.0 - } - }, - "002216": { - "target_market_value": { - "min": 72.0, - "max": 97.0 - } - }, - "601966": { - "target_market_value": { - "min": 220.0, - "max": 280.0 - } - }, - "603195": { - "target_market_value": { - "min": 730.0, - "max": 950.0 - } - }, - "000001": { - "target_market_value": { - "min": 1800.0, - "max": 2500.0 - } - }, - "600867": { - "target_market_value": { - "min": 120.0, - "max": 160.0 - } - }, - "603087": { - "target_market_value": { - "min": 170.0, - "max": 283.0 - } - }, - "603290": { - "target_market_value": { - "min": 150.0, - "max": 200.0 - } - }, - "600332": { - "target_market_value": { - "min": 380.0, - "max": 460.0 - } - }, - "300124": { - "target_market_value": { - "min": 1200.0, - "max": 1400.0 - } - }, - "300146": { - "target_market_value": { - "min": 150.0, - "max": 200.0 - } - }, - "000999": { - "target_market_value": { - "min": 450.0, - "max": 580.0 - } - }, - "002466": { - "target_market_value": { - "min": 330.0, - "max": 415.0 - } - }, - "300009": { - "target_market_value": { - "min": 120.0, - "max": 160.0 - } - }, - "300743": { + "600179": { "target_market_value": { "min": null, "max": null } }, - "603511": { + "600589": { "target_market_value": { "min": null, "max": null } }, - "688553": { + "002065": { "target_market_value": { "min": null, "max": null } - }, - "600030": { - "target_market_value": { - "min": 3200.0, - "max": 3600.0 - } } } } \ No newline at end of file diff --git a/stock_cache.json b/stock_cache.json index 7167ba4..8716bcf 100644 --- a/stock_cache.json +++ b/stock_cache.json @@ -4,21 +4,21 @@ "stock_info": { "code": "300059", "name": "东方财富", - "market_value": 3766.43, - "pe_ratio": 45.97, - "pb_ratio": 4.9, - "ps_ratio": 96.88, - "dividend_yield": 0.0017, - "price": 23.86, - "change_percent": 0.0787, - "roe": 0.0811, - "gross_profit_margin": 0.8372, - "net_profit_margin": 2.694, - "debt_to_assets": 0.7643, + "market_value": 3971.55, + "pe_ratio": 41.33, + "pb_ratio": 4.47, + "ps_ratio": 127.67, + "dividend_yield": 0.0, + "price": 25.13, + "change_percent": 0.0178, + "roe": 0.1073, + "gross_profit_margin": 0.8413, + "net_profit_margin": 3.5769, + "debt_to_assets": 0.7663, "revenue_yoy": 0, - "net_profit_yoy": -0.0269, - "bps": 4.874, - "ocfps": 4.062, + "net_profit_yoy": 0.5057, + "bps": 5.624, + "ocfps": -0.417, "from_cache": false }, "targets": { @@ -28,28 +28,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "601318": { "data": { "stock_info": { "code": "601318", "name": "中国平安", - "market_value": 8988.57, - "pe_ratio": 10.49, - "pb_ratio": 1.01, - "ps_ratio": 0.98, - "dividend_yield": 0.0491, - "price": 49.36, - "change_percent": 0.0158, - "roe": 0.1319, + "market_value": 11023.93, + "pe_ratio": 8.71, + "pb_ratio": 1.14, + "ps_ratio": 1.07, + "dividend_yield": 0.0, + "price": 60.88, + "change_percent": 0.0142, + "roe": 0.1388, "gross_profit_margin": 0, - "net_profit_margin": 0.1806, - "debt_to_assets": 0.8979, + "net_profit_margin": 0.1862, + "debt_to_assets": 0.8994, "revenue_yoy": 0, - "net_profit_yoy": 0.3609, - "bps": 49.859, - "ocfps": 22.933, + "net_profit_yoy": 0.1147, + "bps": 54.475, + "ocfps": 18.785, "from_cache": false }, "targets": { @@ -59,28 +59,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "600085": { "data": { "stock_info": { "code": "600085", "name": "同仁堂", - "market_value": 519.24, - "pe_ratio": 31.11, - "pb_ratio": 4.22, - "ps_ratio": 2.91, - "dividend_yield": 0.0264, - "price": 37.86, - "change_percent": 0.0224, - "roe": 0.1037, - "gross_profit_margin": 0.437, - "net_profit_margin": 0.1435, - "debt_to_assets": 0.3435, + "market_value": 480.29, + "pe_ratio": 31.47, + "pb_ratio": 3.52, + "ps_ratio": 2.58, + "dividend_yield": 0.0, + "price": 35.02, + "change_percent": 0.0081, + "roe": 0.0877, + "gross_profit_margin": 0.4386, + "net_profit_margin": 0.1197, + "debt_to_assets": 0.3257, "revenue_yoy": 0, - "net_profit_yoy": -0.0292, - "bps": 9.463, - "ocfps": -0.038, + "net_profit_yoy": -0.1278, + "bps": 9.963, + "ocfps": 1.449, "from_cache": false }, "targets": { @@ -90,28 +90,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "002714": { "data": { "stock_info": { "code": "002714", "name": "牧原股份", - "market_value": 2023.41, - "pe_ratio": 0, - "pb_ratio": 3.04, - "ps_ratio": 1.83, - "dividend_yield": 0.0223, - "price": 37.04, - "change_percent": 0.0218, - "roe": 0.1552, - "gross_profit_margin": 0.1727, - "net_profit_margin": 0.1162, - "debt_to_assets": 0.5838, + "market_value": 2762.52, + "pe_ratio": 15.45, + "pb_ratio": 3.9, + "ps_ratio": 2.0, + "dividend_yield": 0.0, + "price": 50.57, + "change_percent": 0.0086, + "roe": 0.1985, + "gross_profit_margin": 0.1873, + "net_profit_margin": 0.1352, + "debt_to_assets": 0.555, "revenue_yoy": 0, - "net_profit_yoy": 6.689, - "bps": 13.034, - "ocfps": 5.339, + "net_profit_yoy": 0.4101, + "bps": 13.886, + "ocfps": 5.232, "from_cache": false }, "targets": { @@ -121,28 +121,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "000538": { "data": { "stock_info": { "code": "000538", "name": "云南白药", - "market_value": 1024.17, - "pe_ratio": 25.02, - "pb_ratio": 2.67, - "ps_ratio": 2.62, - "dividend_yield": 0.0573, - "price": 57.4, - "change_percent": 0.0223, - "roe": 0.1076, - "gross_profit_margin": 0.284, - "net_profit_margin": 0.1447, - "debt_to_assets": 0.271, + "market_value": 1018.1, + "pe_ratio": 21.44, + "pb_ratio": 2.56, + "ps_ratio": 2.54, + "dividend_yield": 0.0, + "price": 57.06, + "change_percent": -0.001, + "roe": 0.1216, + "gross_profit_margin": 0.3006, + "net_profit_margin": 0.1562, + "debt_to_assets": 0.2536, "revenue_yoy": 0, - "net_profit_yoy": 0.0493, - "bps": 22.711, - "ocfps": 2.283, + "net_profit_yoy": 0.1041, + "bps": 22.269, + "ocfps": 2.497, "from_cache": false }, "targets": { @@ -152,28 +152,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "000423": { "data": { "stock_info": { "code": "000423", "name": "东阿阿胶", - "market_value": 398.75, - "pe_ratio": 34.65, - "pb_ratio": 4.02, - "ps_ratio": 8.46, - "dividend_yield": 0.0472, - "price": 61.92, - "change_percent": 0.0176, - "roe": 0.1117, - "gross_profit_margin": 0.7413, - "net_profit_margin": 0.2661, - "debt_to_assets": 0.2188, + "market_value": 316.51, + "pe_ratio": 20.33, + "pb_ratio": 3.18, + "ps_ratio": 5.35, + "dividend_yield": 0.0, + "price": 49.15, + "change_percent": -0.0008, + "roe": 0.1258, + "gross_profit_margin": 0.7369, + "net_profit_margin": 0.2679, + "debt_to_assets": 0.2177, "revenue_yoy": 0, - "net_profit_yoy": 0.47, - "bps": 15.392, - "ocfps": 2.238, + "net_profit_yoy": 0.1053, + "bps": 15.448, + "ocfps": 2.034, "from_cache": false }, "targets": { @@ -183,28 +183,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "000963": { "data": { "stock_info": { "code": "000963", "name": "华东医药", - "market_value": 582.24, - "pe_ratio": 20.51, - "pb_ratio": 2.64, - "ps_ratio": 1.43, - "dividend_yield": 0.028, - "price": 33.19, - "change_percent": 0.0263, - "roe": 0.1189, - "gross_profit_margin": 0.3255, - "net_profit_margin": 0.0814, - "debt_to_assets": 0.398, + "market_value": 765.63, + "pe_ratio": 21.8, + "pb_ratio": 3.17, + "ps_ratio": 1.83, + "dividend_yield": 0.0, + "price": 43.65, + "change_percent": 0.0199, + "roe": 0.1165, + "gross_profit_margin": 0.3352, + "net_profit_margin": 0.0839, + "debt_to_assets": 0.3865, "revenue_yoy": 0, - "net_profit_yoy": 0.1705, - "bps": 12.565, - "ocfps": 1.429, + "net_profit_yoy": 0.0724, + "bps": 13.759, + "ocfps": 1.488, "from_cache": false }, "targets": { @@ -214,28 +214,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "002415": { "data": { "stock_info": { "code": "002415", "name": "海康威视", - "market_value": 2618.54, - "pe_ratio": 18.56, - "pb_ratio": 3.41, - "ps_ratio": 2.93, - "dividend_yield": 0.0321, - "price": 28.36, - "change_percent": 0.0249, - "roe": 0.1059, - "gross_profit_margin": 0.4476, - "net_profit_margin": 0.1371, - "debt_to_assets": 0.3296, + "market_value": 2904.35, + "pe_ratio": 24.25, + "pb_ratio": 3.89, + "ps_ratio": 3.14, + "dividend_yield": 0.0, + "price": 31.69, + "change_percent": 0.0083, + "roe": 0.1172, + "gross_profit_margin": 0.4537, + "net_profit_margin": 0.1559, + "debt_to_assets": 0.338, "revenue_yoy": 0, - "net_profit_yoy": -0.084, - "bps": 8.321, - "ocfps": 0.282, + "net_profit_yoy": 0.1494, + "bps": 8.554, + "ocfps": 1.494, "from_cache": false }, "targets": { @@ -245,28 +245,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "002007": { "data": { "stock_info": { "code": "002007", "name": "华兰生物", - "market_value": 291.32, - "pe_ratio": 19.66, - "pb_ratio": 2.49, - "ps_ratio": 5.45, - "dividend_yield": 0.0188, - "price": 15.93, - "change_percent": 0.0225, - "roe": 0.0801, - "gross_profit_margin": 0.6177, - "net_profit_margin": 0.2897, - "debt_to_assets": 0.1485, + "market_value": 306.46, + "pe_ratio": 28.17, + "pb_ratio": 2.93, + "ps_ratio": 7.0, + "dividend_yield": 0.0, + "price": 16.77, + "change_percent": 0.0012, + "roe": 0.0675, + "gross_profit_margin": 0.5768, + "net_profit_margin": 0.245, + "debt_to_assets": 0.1855, "revenue_yoy": 0, - "net_profit_yoy": -0.1346, - "bps": 6.396, - "ocfps": 0.251, + "net_profit_yoy": -0.1507, + "bps": 6.223, + "ocfps": 0.247, "from_cache": false }, "targets": { @@ -276,28 +276,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "600132": { "data": { "stock_info": { "code": "600132", "name": "重庆啤酒", - "market_value": 281.28, - "pe_ratio": 21.04, - "pb_ratio": 19.95, - "ps_ratio": 1.9, - "dividend_yield": 0.074, - "price": 58.12, - "change_percent": 0.0143, - "roe": 0.623, - "gross_profit_margin": 0.492, - "net_profit_margin": 0.2041, - "debt_to_assets": 0.6684, + "market_value": 263.52, + "pe_ratio": 23.64, + "pb_ratio": 13.16, + "ps_ratio": 1.8, + "dividend_yield": 0.0, + "price": 54.45, + "change_percent": 0.0015, + "roe": 0.7785, + "gross_profit_margin": 0.5017, + "net_profit_margin": 0.1901, + "debt_to_assets": 0.6792, "revenue_yoy": 0, - "net_profit_yoy": -0.009, - "bps": 4.413, - "ocfps": 7.153, + "net_profit_yoy": -0.0683, + "bps": 4.138, + "ocfps": 8.118, "from_cache": false }, "targets": { @@ -307,28 +307,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "002049": { "data": { "stock_info": { "code": "002049", "name": "紫光国微", - "market_value": 508.67, - "pe_ratio": 20.1, - "pb_ratio": 4.24, - "ps_ratio": 6.72, - "dividend_yield": 0.0113, - "price": 59.87, - "change_percent": 0.0331, - "roe": 0.0847, - "gross_profit_margin": 0.5681, - "net_profit_margin": 0.2383, - "debt_to_assets": 0.2684, + "market_value": 658.88, + "pe_ratio": 55.87, + "pb_ratio": 5.02, + "ps_ratio": 11.96, + "dividend_yield": 0.0, + "price": 77.55, + "change_percent": 0.0201, + "roe": 0.0983, + "gross_profit_margin": 0.566, + "net_profit_margin": 0.2574, + "debt_to_assets": 0.2702, "revenue_yoy": 0, - "net_profit_yoy": -0.5027, - "bps": 14.13, - "ocfps": 1.145, + "net_profit_yoy": 0.2504, + "bps": 15.447, + "ocfps": 0.336, "from_cache": false }, "targets": { @@ -338,28 +338,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "600436": { "data": { "stock_info": { "code": "600436", "name": "片仔癀", - "market_value": 1261.9, - "pe_ratio": 45.11, - "pb_ratio": 9.47, - "ps_ratio": 12.55, - "dividend_yield": 0.0166, - "price": 209.16, - "change_percent": 0.0203, - "roe": 0.1961, - "gross_profit_margin": 0.4544, - "net_profit_margin": 0.3216, - "debt_to_assets": 0.1882, + "market_value": 1096.95, + "pe_ratio": 36.85, + "pb_ratio": 7.58, + "ps_ratio": 10.17, + "dividend_yield": 0.0, + "price": 181.82, + "change_percent": -0.0023, + "roe": 0.1482, + "gross_profit_margin": 0.3893, + "net_profit_margin": 0.2866, + "debt_to_assets": 0.1395, "revenue_yoy": 0, - "net_profit_yoy": 0.1173, - "bps": 23.24, - "ocfps": 2.153, + "net_profit_yoy": -0.2074, + "bps": 23.988, + "ocfps": 0.807, "from_cache": false }, "targets": { @@ -369,28 +369,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "002216": { "data": { "stock_info": { "code": "002216", "name": "三全食品", - "market_value": 100.14, - "pe_ratio": 13.36, + "market_value": 105.85, + "pe_ratio": 19.52, "pb_ratio": 2.34, - "ps_ratio": 1.42, - "dividend_yield": 0.0439, - "price": 11.39, - "change_percent": 0.0243, - "roe": 0.0914, - "gross_profit_margin": 0.2503, - "net_profit_margin": 0.0769, - "debt_to_assets": 0.4028, + "ps_ratio": 1.6, + "dividend_yield": 0.0, + "price": 12.04, + "change_percent": 0.0067, + "roe": 0.0885, + "gross_profit_margin": 0.2377, + "net_profit_margin": 0.0792, + "debt_to_assets": 0.4016, "revenue_yoy": 0, - "net_profit_yoy": -0.2861, - "bps": 4.878, - "ocfps": 0.835, + "net_profit_yoy": 0.0037, + "bps": 5.149, + "ocfps": 0.06, "from_cache": false }, "targets": { @@ -400,28 +400,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "601966": { "data": { "stock_info": { "code": "601966", "name": "玲珑轮胎", - "market_value": 257.87, - "pe_ratio": 18.54, - "pb_ratio": 1.2, - "ps_ratio": 1.28, - "dividend_yield": 0.0363, - "price": 17.62, - "change_percent": 0.0238, - "roe": 0.0801, - "gross_profit_margin": 0.2435, - "net_profit_margin": 0.1073, - "debt_to_assets": 0.5242, + "market_value": 229.33, + "pe_ratio": 13.09, + "pb_ratio": 0.99, + "ps_ratio": 1.04, + "dividend_yield": 0.0, + "price": 15.67, + "change_percent": 0.0, + "roe": 0.0519, + "gross_profit_margin": 0.1638, + "net_profit_margin": 0.0643, + "debt_to_assets": 0.5118, "revenue_yoy": 0, - "net_profit_yoy": 0.7839, - "bps": 14.836, - "ocfps": 0.953, + "net_profit_yoy": -0.3181, + "bps": 15.898, + "ocfps": 0.936, "from_cache": false }, "targets": { @@ -431,28 +431,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "603195": { "data": { "stock_info": { "code": "603195", "name": "公牛集团", - "market_value": 875.57, - "pe_ratio": 22.62, - "pb_ratio": 5.9, - "ps_ratio": 5.58, - "dividend_yield": 0.0316, - "price": 67.76, - "change_percent": 0.0165, - "roe": 0.2228, - "gross_profit_margin": 0.4312, - "net_profit_margin": 0.2589, - "debt_to_assets": 0.231, + "market_value": 800.12, + "pe_ratio": 18.73, + "pb_ratio": 5.11, + "ps_ratio": 4.75, + "dividend_yield": 0.0, + "price": 44.24, + "change_percent": 0.01, + "roe": 0.189, + "gross_profit_margin": 0.4211, + "net_profit_margin": 0.2445, + "debt_to_assets": 0.2634, "revenue_yoy": 0, - "net_profit_yoy": 0.16, - "bps": 11.493, - "ocfps": 2.333, + "net_profit_yoy": -0.0872, + "bps": 8.659, + "ocfps": 2.002, "from_cache": false }, "targets": { @@ -462,28 +462,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "000001": { "data": { "stock_info": { "code": "000001", "name": "平安银行", - "market_value": 2208.39, - "pe_ratio": 4.75, - "pb_ratio": 0.53, - "ps_ratio": 1.34, - "dividend_yield": 0.0848, - "price": 11.38, - "change_percent": 0.0161, - "roe": 0.0825, + "market_value": 2270.49, + "pe_ratio": 5.1, + "pb_ratio": 0.51, + "ps_ratio": 1.55, + "dividend_yield": 0.0, + "price": 11.7, + "change_percent": 0.0017, + "roe": 0.0757, "gross_profit_margin": 0, - "net_profit_margin": 0.3561, - "debt_to_assets": 0.9146, + "net_profit_margin": 0.3808, + "debt_to_assets": 0.9102, "revenue_yoy": 0, - "net_profit_yoy": 0.0024, - "bps": 21.67, - "ocfps": 7.07, + "net_profit_yoy": -0.035, + "bps": 23.085, + "ocfps": 3.7, "from_cache": false }, "targets": { @@ -493,28 +493,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "600867": { "data": { "stock_info": { "code": "600867", "name": "通化东宝", - "market_value": 150.22, - "pe_ratio": 12.86, - "pb_ratio": 2.41, - "ps_ratio": 4.88, - "dividend_yield": 0.033, - "price": 7.67, - "change_percent": 0.0323, - "roe": -0.0097, - "gross_profit_margin": 0.7447, - "net_profit_margin": -0.0459, - "debt_to_assets": 0.0974, + "market_value": 180.97, + "pe_ratio": 0, + "pb_ratio": 2.54, + "ps_ratio": 9.01, + "dividend_yield": 0.0, + "price": 9.24, + "change_percent": 0.0, + "roe": 0.178, + "gross_profit_margin": 0.7189, + "net_profit_margin": 0.545, + "debt_to_assets": 0.1246, "revenue_yoy": 0, - "net_profit_yoy": -1.0873, - "bps": 3.243, - "ocfps": 0.114, + "net_profit_yoy": 19.1135, + "bps": 3.64, + "ocfps": 0.194, "from_cache": false }, "targets": { @@ -524,28 +524,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "603087": { "data": { "stock_info": { "code": "603087", "name": "甘李药业", - "market_value": 258.16, - "pe_ratio": 75.91, - "pb_ratio": 2.37, - "ps_ratio": 9.9, - "dividend_yield": 0.0163, - "price": 42.95, - "change_percent": 0.0312, - "roe": 0.0462, - "gross_profit_margin": 0.7536, - "net_profit_margin": 0.226, - "debt_to_assets": 0.083, + "market_value": 393.8, + "pe_ratio": 64.07, + "pb_ratio": 3.49, + "ps_ratio": 12.93, + "dividend_yield": 0.0, + "price": 65.93, + "change_percent": 0.0056, + "roe": 0.0733, + "gross_profit_margin": 0.7618, + "net_profit_margin": 0.2686, + "debt_to_assets": 0.0709, "revenue_yoy": 0, - "net_profit_yoy": 0.9036, - "bps": 18.645, - "ocfps": 0.774, + "net_profit_yoy": 0.6132, + "bps": 18.882, + "ocfps": 0.807, "from_cache": false }, "targets": { @@ -555,28 +555,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "603290": { "data": { "stock_info": { "code": "603290", "name": "斯达半导", - "market_value": 202.52, - "pe_ratio": 22.24, - "pb_ratio": 3.07, - "ps_ratio": 5.53, - "dividend_yield": 0.0135, - "price": 84.57, - "change_percent": 0.0447, - "roe": 0.065, - "gross_profit_margin": 0.3169, - "net_profit_margin": 0.1773, - "debt_to_assets": 0.2998, + "market_value": 236.24, + "pe_ratio": 46.53, + "pb_ratio": 3.42, + "ps_ratio": 6.97, + "dividend_yield": 0.0, + "price": 98.65, + "change_percent": 0.0156, + "roe": 0.0562, + "gross_profit_margin": 0.2791, + "net_profit_margin": 0.1293, + "debt_to_assets": 0.3394, "revenue_yoy": 0, - "net_profit_yoy": -0.3569, - "bps": 27.532, - "ocfps": 2.727, + "net_profit_yoy": -0.098, + "bps": 28.877, + "ocfps": 1.599, "from_cache": false }, "targets": { @@ -586,28 +586,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "600332": { "data": { "stock_info": { "code": "600332", "name": "白云山", - "market_value": 442.54, - "pe_ratio": 10.91, - "pb_ratio": 1.24, + "market_value": 443.03, + "pe_ratio": 15.62, + "pb_ratio": 1.17, "ps_ratio": 0.59, - "dividend_yield": 0.0422, - "price": 27.22, - "change_percent": 0.0218, - "roe": 0.0888, - "gross_profit_margin": 0.177, - "net_profit_margin": 0.0557, - "debt_to_assets": 0.5199, + "dividend_yield": 0.0, + "price": 27.25, + "change_percent": 0.0022, + "roe": 0.0897, + "gross_profit_margin": 0.176, + "net_profit_margin": 0.0552, + "debt_to_assets": 0.5192, "revenue_yoy": 0, - "net_profit_yoy": -0.1668, - "bps": 22.28, - "ocfps": -0.462, + "net_profit_yoy": 0.0478, + "bps": 23.316, + "ocfps": -1.213, "from_cache": false }, "targets": { @@ -617,28 +617,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "300124": { "data": { "stock_info": { "code": "300124", "name": "汇川技术", - "market_value": 1663.81, - "pe_ratio": 35.09, - "pb_ratio": 6.21, - "ps_ratio": 5.47, - "dividend_yield": 0.0072, - "price": 61.8, - "change_percent": 0.0591, - "roe": 0.1316, - "gross_profit_margin": 0.3102, - "net_profit_margin": 0.1345, - "debt_to_assets": 0.4929, + "market_value": 1959.62, + "pe_ratio": 45.73, + "pb_ratio": 5.7, + "ps_ratio": 5.29, + "dividend_yield": 0.0, + "price": 72.4, + "change_percent": 0.0126, + "roe": 0.1364, + "gross_profit_margin": 0.2927, + "net_profit_margin": 0.1364, + "debt_to_assets": 0.4676, "revenue_yoy": 0, - "net_profit_yoy": 0.0104, - "bps": 9.885, - "ocfps": 1.44, + "net_profit_yoy": 0.2684, + "bps": 12.704, + "ocfps": 1.453, "from_cache": false }, "targets": { @@ -648,28 +648,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "300146": { "data": { "stock_info": { "code": "300146", "name": "汤臣倍健", - "market_value": 198.49, - "pe_ratio": 11.37, - "pb_ratio": 1.75, - "ps_ratio": 2.11, - "dividend_yield": 0.0764, - "price": 11.67, - "change_percent": 0.0327, - "roe": 0.074, - "gross_profit_margin": 0.6793, - "net_profit_margin": 0.1504, - "debt_to_assets": 0.1611, + "market_value": 220.76, + "pe_ratio": 33.82, + "pb_ratio": 1.95, + "ps_ratio": 3.23, + "dividend_yield": 0.0, + "price": 13.05, + "change_percent": 0.0108, + "roe": 0.0811, + "gross_profit_margin": 0.6855, + "net_profit_margin": 0.1921, + "debt_to_assets": 0.186, "revenue_yoy": 0, - "net_profit_yoy": -0.5431, - "bps": 6.659, - "ocfps": 0.201, + "net_profit_yoy": 0.0445, + "bps": 6.689, + "ocfps": 0.545, "from_cache": false }, "targets": { @@ -679,28 +679,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "000999": { "data": { "stock_info": { "code": "000999", "name": "华润三九", - "market_value": 557.39, - "pe_ratio": 19.54, - "pb_ratio": 2.9, - "ps_ratio": 2.25, - "dividend_yield": 0.0496, - "price": 43.4, - "change_percent": 0.0197, - "roe": 0.1499, - "gross_profit_margin": 0.5268, - "net_profit_margin": 0.1644, - "debt_to_assets": 0.3607, + "market_value": 500.26, + "pe_ratio": 14.85, + "pb_ratio": 2.46, + "ps_ratio": 1.81, + "dividend_yield": 0.0, + "price": 30.06, + "change_percent": -0.0046, + "roe": 0.1147, + "gross_profit_margin": 0.5352, + "net_profit_margin": 0.1319, + "debt_to_assets": 0.3392, "revenue_yoy": 0, - "net_profit_yoy": 0.2319, - "bps": 15.987, - "ocfps": 2.495, + "net_profit_yoy": -0.2051, + "bps": 12.688, + "ocfps": 1.758, "from_cache": false }, "targets": { @@ -710,7 +710,7 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "000516": { "data": { @@ -748,21 +748,21 @@ "stock_info": { "code": "002466", "name": "天齐锂业", - "market_value": 541.44, - "pe_ratio": 7.42, - "pb_ratio": 1.24, - "ps_ratio": 1.34, - "dividend_yield": 0.0409, - "price": 32.99, - "change_percent": 0.0217, - "roe": -0.12, - "gross_profit_margin": 0.4903, - "net_profit_margin": 0.1723, - "debt_to_assets": 0.2843, + "market_value": 976.51, + "pe_ratio": 0, + "pb_ratio": 2.31, + "ps_ratio": 7.48, + "dividend_yield": 0.0, + "price": 59.5, + "change_percent": 0.0998, + "roe": 0.0043, + "gross_profit_margin": 0.3898, + "net_profit_margin": 0.2954, + "debt_to_assets": 0.305, "revenue_yoy": 0, - "net_profit_yoy": -1.704, - "bps": 26.51, - "ocfps": 2.554, + "net_profit_yoy": 1.0316, + "bps": 25.837, + "ocfps": 1.336, "from_cache": false }, "targets": { @@ -772,7 +772,7 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "index_data": { "data": { @@ -2130,21 +2130,21 @@ "stock_info": { "code": "300009", "name": "安科生物", - "market_value": 139.66, - "pe_ratio": 16.48, - "pb_ratio": 3.56, - "ps_ratio": 4.87, - "dividend_yield": 0.0299, - "price": 8.35, - "change_percent": 0.0283, - "roe": 0.1537, - "gross_profit_margin": 0.7775, - "net_profit_margin": 0.3122, - "debt_to_assets": 0.172, + "market_value": 184.31, + "pe_ratio": 26.07, + "pb_ratio": 4.42, + "ps_ratio": 7.27, + "dividend_yield": 0.0, + "price": 11.02, + "change_percent": -0.009, + "roe": 0.133, + "gross_profit_margin": 0.7597, + "net_profit_margin": 0.2867, + "debt_to_assets": 0.1481, "revenue_yoy": 0, - "net_profit_yoy": -0.0989, - "bps": 2.349, - "ocfps": 0.251, + "net_profit_yoy": -0.0648, + "bps": 2.493, + "ocfps": 0.332, "from_cache": false }, "targets": { @@ -2154,28 +2154,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "300743": { "data": { "stock_info": { "code": "300743", "name": "天地数码", - "market_value": 22.94, - "pe_ratio": 41.23, - "pb_ratio": 3.76, - "ps_ratio": 3.56, - "dividend_yield": 0.0229, - "price": 14.95, - "change_percent": 0.055, - "roe": 0.1209, - "gross_profit_margin": 0.3493, - "net_profit_margin": 0.1335, - "debt_to_assets": 0.3786, + "market_value": 28.92, + "pe_ratio": 31.31, + "pb_ratio": 4.66, + "ps_ratio": 3.79, + "dividend_yield": 0.0, + "price": 19.12, + "change_percent": -0.0124, + "roe": 0.1456, + "gross_profit_margin": 0.3269, + "net_profit_margin": 0.1376, + "debt_to_assets": 0.4288, "revenue_yoy": 0, - "net_profit_yoy": 0.8549, - "bps": 3.972, - "ocfps": 0.327, + "net_profit_yoy": 0.2294, + "bps": 4.105, + "ocfps": 0.49, "from_cache": false }, "targets": { @@ -2185,28 +2185,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "603511": { "data": { "stock_info": { "code": "603511", "name": "爱慕股份", - "market_value": 50.86, - "pe_ratio": 16.64, - "pb_ratio": 1.16, - "ps_ratio": 1.48, - "dividend_yield": 0.0602, - "price": 12.51, - "change_percent": 0.1003, - "roe": 0.0317, - "gross_profit_margin": 0.6597, - "net_profit_margin": 0.0615, - "debt_to_assets": 0.146, + "market_value": 67.44, + "pe_ratio": 41.28, + "pb_ratio": 1.55, + "ps_ratio": 2.13, + "dividend_yield": 0.0, + "price": 16.69, + "change_percent": -0.0113, + "roe": 0.0231, + "gross_profit_margin": 0.6656, + "net_profit_margin": 0.0452, + "debt_to_assets": 0.1433, "revenue_yoy": 0, - "net_profit_yoy": -0.3817, - "bps": 10.779, - "ocfps": 0.79, + "net_profit_yoy": -0.284, + "bps": 10.775, + "ocfps": 1.035, "from_cache": false }, "targets": { @@ -2216,28 +2216,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "688553": { "data": { "stock_info": { "code": "688553", "name": "汇宇制药-W", - "market_value": 60.79, - "pe_ratio": 43.49, - "pb_ratio": 1.57, - "ps_ratio": 6.56, + "market_value": 91.71, + "pe_ratio": 28.18, + "pb_ratio": 2.46, + "ps_ratio": 8.38, "dividend_yield": 0.0, - "price": 14.35, - "change_percent": 0.0414, - "roe": 0.0594, - "gross_profit_margin": 0.8315, - "net_profit_margin": 0.2592, - "debt_to_assets": 0.2321, + "price": 21.65, + "change_percent": 0.0285, + "roe": -0.0132, + "gross_profit_margin": 0.8049, + "net_profit_margin": -0.0742, + "debt_to_assets": 0.2369, "revenue_yoy": 0, - "net_profit_yoy": 1.5562, - "bps": 9.16, - "ocfps": 0.383, + "net_profit_yoy": -1.2235, + "bps": 8.808, + "ocfps": 0.074, "from_cache": false }, "targets": { @@ -2247,28 +2247,28 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" }, "600030": { "data": { "stock_info": { "code": "600030", "name": "中信证券", - "market_value": 4105.29, - "pe_ratio": 20.82, - "pb_ratio": 1.6, - "ps_ratio": 6.83, - "dividend_yield": 0.0258, - "price": 27.7, - "change_percent": 0.0449, - "roe": 0.0605, + "market_value": 4309.82, + "pe_ratio": 19.86, + "pb_ratio": 1.54, + "ps_ratio": 6.76, + "dividend_yield": 0.0, + "price": 29.08, + "change_percent": 0.0062, + "roe": 0.0762, "gross_profit_margin": 0, - "net_profit_margin": 0.3782, - "debt_to_assets": 0.8314, + "net_profit_margin": 0.4285, + "debt_to_assets": 0.8417, "revenue_yoy": 0, - "net_profit_yoy": 0.0235, - "bps": 17.594, - "ocfps": 7.666, + "net_profit_yoy": 0.3786, + "bps": 18.91, + "ocfps": 3.792, "from_cache": false }, "targets": { @@ -2278,6 +2278,99 @@ } } }, - "timestamp": "2025-01-15" + "timestamp": "2025-11-13" + }, + "600179": { + "data": { + "stock_info": { + "code": "600179", + "name": "安通控股", + "market_value": 206.5, + "pe_ratio": 33.83, + "pb_ratio": 1.81, + "ps_ratio": 2.74, + "dividend_yield": 0.0, + "price": 4.88, + "change_percent": 0.0942, + "roe": 0.0598, + "gross_profit_margin": 0.1529, + "net_profit_margin": 0.1016, + "debt_to_assets": 0.2239, + "revenue_yoy": 0, + "net_profit_yoy": 3.1177, + "bps": 2.703, + "ocfps": 0.363, + "from_cache": false + }, + "targets": { + "target_market_value": { + "min": null, + "max": null + } + } + }, + "timestamp": "2025-11-17" + }, + "600589": { + "data": { + "stock_info": { + "code": "600589", + "name": "大位科技", + "market_value": 109.27, + "pe_ratio": 0, + "pb_ratio": 15.37, + "ps_ratio": 26.96, + "dividend_yield": 0.0, + "price": 7.36, + "change_percent": -0.0252, + "roe": 0.0552, + "gross_profit_margin": 0.206, + "net_profit_margin": 0.1242, + "debt_to_assets": 0.7641, + "revenue_yoy": 0, + "net_profit_yoy": 2.3678, + "bps": 0.479, + "ocfps": 0.033, + "from_cache": false + }, + "targets": { + "target_market_value": { + "min": null, + "max": null + } + } + }, + "timestamp": "2025-11-17" + }, + "002065": { + "data": { + "stock_info": { + "code": "002065", + "name": "东华软件", + "market_value": 324.39, + "pe_ratio": 64.92, + "pb_ratio": 2.66, + "ps_ratio": 2.43, + "dividend_yield": 0.0049, + "price": 10.12, + "change_percent": 0.011, + "roe": 0.029, + "gross_profit_margin": 0.2088, + "net_profit_margin": 0.0466, + "debt_to_assets": 0.5099, + "revenue_yoy": 0, + "net_profit_yoy": -0.2845, + "bps": 3.806, + "ocfps": 0.192, + "from_cache": false + }, + "targets": { + "target_market_value": { + "min": null, + "max": null + } + } + }, + "timestamp": "2025-11-17" } } \ No newline at end of file diff --git a/watchlist.json b/watchlist.json index 460325f..85e5326 100644 --- a/watchlist.json +++ b/watchlist.json @@ -1,38 +1,8 @@ { - "sh600601": { - "target_market_value": null, - "target_pe": null, - "target_pb": null, - "target_dividend_yield": null - }, - "sz0024515": { - "target_market_value": null, - "target_pe": null, - "target_pb": null, - "target_dividend_yield": null - }, - "sz870199": { - "target_market_value": null, - "target_pe": null, - "target_pb": null, - "target_dividend_yield": null - }, - "601318": { - "target_market_value": null, - "target_pe": null, - "target_pb": null, - "target_dividend_yield": null - }, - "600601": { - "target_market_value": null, - "target_pe": null, - "target_pb": null, - "target_dividend_yield": null - }, - "300059": { - "target_market_value": null, - "target_pe": null, - "target_pb": null, - "target_dividend_yield": null - } + "600179": { + "target_market_value": { + "min": null, + "max": null + } + } } \ No newline at end of file