Files
guaiwoluo2020 a705593955 feat: 添加新闻监控、持仓管理、系统日志等功能
- 新增新闻爬取和监控模块 (news_crawler, news_monitor)
- 新增 LLM 分析模块 (llm_analyzer)
- 新增持仓管理和交易历史存储
- 新增系统日志功能
- 新增前端页面: News, Positions, Settings, SystemLog
- 更新路由和 API 接口
- 更新 .gitignore 排除敏感文件
2026-03-17 11:32:37 +08:00

438 lines
13 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
市场事件配置
定义关注的财经数据、关键人物和事件
"""
# 关注的交易品种
WATCH_SYMBOLS = ["GOLD", "OIL", "BTC", "SPX", "USDJPY"]
# 定期财经数据(财经日历)
ECONOMIC_DATA = [
# ============ 就业类 ============
{
"name": "非农就业人数",
"name_en": "Non-Farm Payrolls",
"country": "US",
"importance": 3, # 3=高影响, 2=中, 1=低
"symbols": ["GOLD", "SPX", "USDJPY"],
"unit": "万人"
},
{
"name": "失业率",
"name_en": "Unemployment Rate",
"country": "US",
"importance": 3,
"symbols": ["GOLD", "SPX", "USDJPY"],
"unit": "%"
},
{
"name": "ADP就业人数",
"name_en": "ADP Nonfarm Employment Change",
"country": "US",
"importance": 2,
"symbols": ["GOLD", "SPX"],
"unit": "万人"
},
{
"name": "初请失业金人数",
"name_en": "Initial Jobless Claims",
"country": "US",
"importance": 2,
"symbols": ["GOLD", "SPX"],
"unit": "万人"
},
# ============ 通胀类 ============
{
"name": "CPI年率",
"name_en": "CPI YoY",
"country": "US",
"importance": 3,
"symbols": ["GOLD", "SPX", "USDJPY", "BTC"],
"unit": "%"
},
{
"name": "核心CPI年率",
"name_en": "Core CPI YoY",
"country": "US",
"importance": 3,
"symbols": ["GOLD", "SPX", "USDJPY"],
"unit": "%"
},
{
"name": "PPI年率",
"name_en": "PPI YoY",
"country": "US",
"importance": 2,
"symbols": ["GOLD", "SPX"],
"unit": "%"
},
{
"name": "PCE物价指数年率",
"name_en": "PCE Price Index YoY",
"country": "US",
"importance": 3,
"symbols": ["GOLD", "SPX"],
"unit": "%"
},
{
"name": "核心PCE年率",
"name_en": "Core PCE YoY",
"country": "US",
"importance": 3,
"symbols": ["GOLD", "SPX"],
"unit": "%"
},
# ============ 利率类 ============
{
"name": "美联储利率决议",
"name_en": "Federal Funds Rate",
"country": "US",
"importance": 3,
"symbols": ["GOLD", "SPX", "USDJPY", "BTC"],
"unit": "%"
},
{
"name": "日本央行利率决议",
"name_en": "BoJ Interest Rate",
"country": "JP",
"importance": 3,
"symbols": ["USDJPY"],
"unit": "%"
},
{
"name": "欧洲央行利率决议",
"name_en": "ECB Interest Rate",
"country": "EU",
"importance": 2,
"symbols": ["GOLD"],
"unit": "%"
},
# ============ 经济类 ============
{
"name": "GDP年率",
"name_en": "GDP YoY",
"country": "US",
"importance": 3,
"symbols": ["GOLD", "SPX"],
"unit": "%"
},
{
"name": "零售销售月率",
"name_en": "Retail Sales MoM",
"country": "US",
"importance": 2,
"symbols": ["SPX"],
"unit": "%"
},
{
"name": "ISM制造业PMI",
"name_en": "ISM Manufacturing PMI",
"country": "US",
"importance": 2,
"symbols": ["SPX"],
"unit": ""
},
{
"name": "ISM服务业PMI",
"name_en": "ISM Services PMI",
"country": "US",
"importance": 2,
"symbols": ["SPX"],
"unit": ""
},
# ============ 原油类 ============
{
"name": "EIA原油库存",
"name_en": "EIA Crude Oil Inventories",
"country": "US",
"importance": 2,
"symbols": ["OIL"],
"unit": "万桶"
},
{
"name": "API原油库存",
"name_en": "API Crude Oil Stock",
"country": "US",
"importance": 1,
"symbols": ["OIL"],
"unit": "万桶"
},
# ============ 日本数据 ============
{
"name": "日本CPI年率",
"name_en": "Japan CPI YoY",
"country": "JP",
"importance": 2,
"symbols": ["USDJPY"],
"unit": "%"
},
{
"name": "日本GDP年率",
"name_en": "Japan GDP YoY",
"country": "JP",
"importance": 2,
"symbols": ["USDJPY"],
"unit": "%"
},
]
# 关键人物讲话配置
KEY_SPEAKERS = [
{
"name": "特朗普",
"name_en": "Trump",
"title": "美国总统",
"title_en": "US President",
"keywords": ["特朗普", "Trump", "总统"],
"importance": 3,
"watch_topics": ["关税", "贸易", "制裁", "中国", "利率", "美元", "北约", "俄乌", "战争", "减税"],
"impact_symbols": ["GOLD", "SPX", "USDJPY", "BTC", "OIL"],
"default_impact": {
"GOLD": {"关税/制裁": "利好", "战争/冲突": "利好", "减税": "中性"},
"SPX": {"关税/制裁": "利空", "减税": "利好"},
"USDJPY": {"关税": "不确定", "利率": "利好"},
"OIL": {"制裁": "利好", "战争": "利好"},
}
},
{
"name": "鲍威尔",
"name_en": "Powell",
"title": "美联储主席",
"title_en": "Fed Chair",
"keywords": ["鲍威尔", "Powell", "美联储主席", "Fed Chair"],
"importance": 3,
"watch_topics": ["利率", "通胀", "就业", "降息", "加息", "货币政策", "缩表"],
"impact_symbols": ["GOLD", "SPX", "USDJPY", "BTC"],
"default_impact": {
"GOLD": {"降息": "利好", "加息": "利空", "鸽派": "利好", "鹰派": "利空"},
"SPX": {"降息": "利好", "加息": "利空", "鸽派": "利好", "鹰派": "利空"},
"USDJPY": {"降息": "利空", "加息": "利好"},
"BTC": {"降息": "利好", "加息": "利空"},
}
},
{
"name": "贝森特",
"name_en": "Bessent",
"title": "美国财长",
"title_en": "US Treasury Secretary",
"keywords": ["贝森特", "Bessent", "财长", "Treasury Secretary", "财政部"],
"importance": 2,
"watch_topics": ["债务", "预算", "制裁", "汇率", "国债"],
"impact_symbols": ["GOLD", "SPX", "USDJPY"],
"default_impact": {
"GOLD": {"债务担忧": "利好", "制裁": "利好"},
"SPX": {"债务担忧": "利空"},
}
},
{
"name": "植田和男",
"name_en": "Ueda",
"title": "日本央行行长",
"title_en": "BoJ Governor",
"keywords": ["植田", "Ueda", "日本央行", "日银", "BoJ"],
"importance": 2,
"watch_topics": ["利率", "YCC", "干预", "日元", "宽松"],
"impact_symbols": ["USDJPY"],
"default_impact": {
"USDJPY": {"加息": "利空", "干预": "利空", "宽松": "利好"},
}
},
{
"name": "拉加德",
"name_en": "Lagarde",
"title": "欧洲央行行长",
"title_en": "ECB President",
"keywords": ["拉加德", "Lagarde", "欧洲央行", "ECB"],
"importance": 2,
"watch_topics": ["利率", "通胀", "欧元"],
"impact_symbols": ["GOLD"],
"default_impact": {
"GOLD": {"降息": "利好", "加息": "利空"},
}
},
]
# 关键事件配置
KEY_EVENTS = [
{
"name": "FOMC会议",
"name_en": "FOMC Meeting",
"type": "scheduled",
"importance": 3,
"symbols": ["GOLD", "SPX", "USDJPY", "BTC"],
"watch_keywords": ["利率决议", "点阵图", "经济预测", "发布会", "FOMC"],
"description": "美联储联邦公开市场委员会会议"
},
{
"name": "OPEC会议",
"name_en": "OPEC Meeting",
"type": "scheduled",
"importance": 3,
"symbols": ["OIL"],
"watch_keywords": ["减产", "增产", "产量配额", "OPEC", "OPEC+"],
"description": "石油输出国组织会议"
},
{
"name": "G7/G20峰会",
"name_en": "G7/G20 Summit",
"type": "scheduled",
"importance": 2,
"symbols": ["GOLD", "OIL", "SPX"],
"watch_keywords": ["G7", "G20", "峰会", "制裁", "贸易"],
"description": "七国集团/二十国集团峰会"
},
{
"name": "地缘冲突",
"name_en": "Geopolitical Conflict",
"type": "breaking",
"importance": 3,
"symbols": ["GOLD", "OIL"],
"watch_keywords": ["战争", "冲突", "制裁", "导弹", "核", "恐怖袭击", "入侵", "军事行动"],
"description": "地缘政治突发事件"
},
{
"name": "加密监管",
"name_en": "Crypto Regulation",
"type": "breaking",
"importance": 2,
"symbols": ["BTC"],
"watch_keywords": ["SEC", "ETF", "比特币", "监管", "禁令", "审批"],
"description": "加密货币监管新闻"
},
{
"name": "贸易战",
"name_en": "Trade War",
"type": "breaking",
"importance": 3,
"symbols": ["GOLD", "SPX", "OIL"],
"watch_keywords": ["关税", "贸易战", "制裁", "禁运", "贸易谈判"],
"description": "贸易战相关新闻"
},
]
# 数据影响规则(实际值 vs 预期值)
DATA_IMPACT_RULES = {
"GOLD": {
"非农就业人数": {
"better": "利空", # 好于预期 -> 利空黄金
"worse": "利好", # 差于预期 -> 利好黄金
"reason_better": "就业强劲,美元走强,黄金承压",
"reason_worse": "就业疲软,美元走弱,黄金上涨"
},
"失业率": {
"better": "利好", # 失业率下降
"worse": "利空", # 失业率上升
"reason_better": "失业率下降,经济向好,但可能提前加息",
"reason_worse": "失业率上升,经济疲软,可能降息"
},
"CPI年率": {
"better": "利空", # 高于预期 -> 利空
"worse": "利好",
"reason_better": "通胀超预期,加息预期升温",
"reason_worse": "通胀低于预期,降息预期升温"
},
"美联储利率决议": {
"hike": "利空", # 加息
"cut": "利好", # 降息
"hold": "中性",
"reason_hike": "加息推高美元,黄金承压",
"reason_cut": "降息削弱美元,黄金上涨"
},
"EIA原油库存": {
"higher": "利空",
"lower": "利好",
"reason_higher": "库存增加,需求疲软",
"reason_lower": "库存下降,需求旺盛"
},
},
"SPX": {
"非农就业人数": {
"better": "利好",
"worse": "利空",
"reason_better": "就业强劲,经济向好",
"reason_worse": "就业疲软,经济担忧"
},
"CPI年率": {
"better": "利空", # 高通胀利空股市
"worse": "利好",
"reason_better": "通胀超预期,加息预期升温",
"reason_worse": "通胀降温,降息预期升温"
},
"美联储利率决议": {
"hike": "利空",
"cut": "利好",
"hold": "中性",
},
},
"USDJPY": {
"非农就业人数": {
"better": "利好", # 好于预期 -> 美元涨 -> USDJPY涨
"worse": "利空",
},
"美联储利率决议": {
"hike": "利好",
"cut": "利空",
},
"日本央行利率决议": {
"hike": "利空", # 日本加息 -> 日元涨 -> USDJPY跌
"cut": "利好",
},
},
"BTC": {
"美联储利率决议": {
"hike": "利空",
"cut": "利好",
},
"CPI年率": {
"better": "利空",
"worse": "利好",
},
},
"OIL": {
"EIA原油库存": {
"higher": "利空",
"lower": "利好",
"reason_higher": "库存增加,供过于求",
"reason_lower": "库存下降,供不应求"
},
"OPEC会议": {
"cut_production": "利好", # 减产
"increase_production": "利空", # 增产
},
},
}
# 获取重要事件名称列表(用于日历过滤)
def get_important_event_names() -> list:
"""获取所有重要事件名称"""
names = set()
for event in ECONOMIC_DATA:
if event['importance'] >= 2: # 中等及以上重要
names.add(event['name'])
names.add(event['name_en'])
return list(names)
# 获取高影响事件名称列表
def get_high_impact_event_names() -> list:
"""获取高影响事件名称"""
names = set()
for event in ECONOMIC_DATA:
if event['importance'] == 3: # 高影响
names.add(event['name'])
names.add(event['name_en'])
return list(names)
# 获取事件影响的品种
def get_event_symbols(event_name: str) -> list:
"""获取事件影响的品种列表"""
for event in ECONOMIC_DATA:
if event_name in [event['name'], event['name_en']]:
return event['symbols']
return WATCH_SYMBOLS # 默认返回所有品种