聚烯烃更改预测标的为PP期货

This commit is contained in:
workpc 2025-07-07 13:36:50 +08:00
parent 830f369dc6
commit 7ed37c23cb
3 changed files with 39 additions and 34 deletions

View File

@ -167,7 +167,7 @@ ClassifyId = 1161
# "funcModule": '研究报告信息',
# "funcOperation": '上传聚烯烃PP价格预测报告',
# "data": {
# "groupNo": '000211' # 用户组编号
# "groupNo": '000211', # 用户组编号
# "ownerAccount": '36541', # 报告所属用户账号  36541 - 贾青雪
# "reportType": 'OIL_PRICE_FORECAST', # 报告类型固定为OIL_PRICE_FORECAST
# "fileName": '', # 文件名称
@ -176,7 +176,7 @@ ClassifyId = 1161
# "smartBusinessClassCode": 'JXTJGYCBG', # 分析报告分类编码
# "reportEmployeeCode": "E40482", # 报告人  E40482  - 管理员  0000027663 - 刘小朋  
# "reportDeptCode": "JXTJGYCBG", # 报告部门 - 002000621000  SH期货研究部  
# "productGroupCode": "RAW_MATERIAL"   # 商品分类
# "productGroupCode": "RAW_MATERIAL" # 商品分类
# }
# }
@ -196,8 +196,9 @@ ClassifyId = 1161
# "funcOperation": "查询",
# "data": {
# "dateStart": "20200101",
# "dateEnd": "20241231",
# "dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价
# "dateEnd": "",
# # 数据项编码,代表 PP期货 价格
# "dataItemNoList": ["MAIN_CONFT_SETTLE_PRICE"]
# }
# }
@ -334,8 +335,9 @@ query_data_list_item_nos_data = {
"funcOperation": "查询",
"data": {
"dateStart": "20200101",
"dateEnd": "20241231",
"dataItemNoList": ["Brentzdj", "Brentzgj"] # 数据项编码,代表 brent最低价和最高价
"dateEnd": "",
# 数据项编码,代表 PP期货 价格
"dataItemNoList": ["MAIN_CONFT_SETTLE_PRICE"]
}
}
@ -424,8 +426,8 @@ DEFAULT_CONFIG = {
# 开关
is_train = True # 是否训练
is_debug = False # 是否调试
is_eta = True # 是否使用eta接口
is_market = False # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效
is_eta = False # 是否使用eta接口
is_market = True # 是否通过市场信息平台获取特征 ,在is_eta 为true 的情况下生效
is_timefurture = True # 是否使用时间特征
is_fivemodels = False # 是否使用之前保存的最佳的5个模型
is_edbcode = False # 特征使用edbcoding列表中的
@ -457,15 +459,18 @@ if add_kdj and is_edbnamelist:
edbnamelist = edbnamelist+['K', 'D', 'J']
# 模型参数
y = 'AVG-金能大唐久泰青州'
avg_cols = [
'PP拉丝1102K出厂价青州国家能源宁煤',
'PP拉丝L5E89出厂价华北第二区域内蒙古久泰新材料',
'PP拉丝L5E89出厂价河北、鲁北大唐内蒙多伦',
'PP拉丝HP550J市场价青岛金能化学'
]
offsite = 80
offsite_col = ['PP拉丝HP550J市场价青岛金能化学']
# y = 'AVG-金能大唐久泰青州'
# avg_cols = [
# 'PP拉丝1102K出厂价青州国家能源宁煤',
# 'PP拉丝L5E89出厂价华北第二区域内蒙古久泰新材料',
# 'PP拉丝L5E89出厂价河北、鲁北大唐内蒙多伦',
# 'PP拉丝HP550J市场价青岛金能化学'
# ]
# offsite = 80
# offsite_col = ['PP拉丝HP550J市场价青岛金能化学']
y = 'MAIN_CONFT_SETTLE_PRICE'
horizon = 5 # 预测的步长
input_size = 40 # 输入序列长度
train_steps = 50 if is_debug else 1000 # 训练步数,用来限定epoch次数

View File

@ -993,14 +993,14 @@ def datachuli_juxiting(df_zhibiaoshuju, df_zhibiaoliebiao, datecol='date', end_t
# date转为pddate
df.rename(columns={datecol: 'ds'}, inplace=True)
# 指定列统一减少数值
print(global_config.keys())
df[global_config['offsite_col']] = df[global_config['offsite_col']] - \
global_config['offsite']
# 预测列为avg_cols的均值
df[global_config['y']] = df[global_config['avg_cols']].mean(axis=1)
# 去掉多余的列avg_cols
df = df.drop(columns=global_config['avg_cols'])
# # 指定列统一减少数值
# print(global_config.keys())
# df[global_config['offsite_col']] = df[global_config['offsite_col']] - \
# global_config['offsite']
# # 预测列为avg_cols的均值
# df[global_config['y']] = df[global_config['avg_cols']].mean(axis=1)
# # 去掉多余的列avg_cols
# df = df.drop(columns=global_config['avg_cols'])
# 重命名预测列
df.rename(columns={global_config['y']: 'y'}, inplace=True)
@ -2334,7 +2334,6 @@ def get_market_data(end_time, df):
items_res = requests.post(url=config.query_data_list_item_nos_url, headers=headers,
json=config.query_data_list_item_nos_data, timeout=(3, 35))
json_data = json.loads(items_res.text)
config.logger.info(f"获取到的数据:{json_data}")
df3 = pd.DataFrame(json_data['data'])
# 按照dataItemNo 分组 得到多个dataframe 最后根据dataDate merge 成一个dataframe
df2 = pd.DataFrame()
@ -2350,7 +2349,9 @@ def get_market_data(end_time, df):
# 20240101 转换为 2024-01-01
df2['date'] = pd.to_datetime(df2['date'], format='%Y%m%d')
df2['date'] = df2['date'].dt.strftime('%Y-%m-%d')
config.logger.info(f'市场信息指标拼接前:{df.shape}')
df = pd.merge(df, df2, how='left', on='date')
config.logger.info(f'市场信息指标拼接后:{df.shape}')
return df

View File

@ -13,9 +13,9 @@ global_config.update({
'logger': logger,
'dataset': dataset,
'y': y,
'offsite_col': offsite_col,
'avg_cols': avg_cols,
'offsite': offsite,
# 'offsite_col': offsite_col,
# 'avg_cols': avg_cols,
# 'offsite': offsite,
'edbcodenamedict': edbcodenamedict,
'is_debug': is_debug,
'is_train': is_train,
@ -303,7 +303,7 @@ def predict_main():
try:
# 如果是测试环境最高价最低价取excel文档
if server_host == '192.168.100.53':
logger.info('从excel文档获取最高价最低价')
logger.info('从excel文档获取市场信息平台指标')
df_zhibiaoshuju = get_high_low_data(df_zhibiaoshuju)
else:
logger.info('从市场信息平台获取数据')
@ -311,7 +311,7 @@ def predict_main():
end_time, df_zhibiaoshuju)
except:
logger.info('最高最低价拼接失败')
logger.info('市场信息平台数据项-eta数据项 拼接失败')
# 保存到xlsx文件的sheet表
with pd.ExcelWriter(os.path.join(dataset, data_set)) as file:
@ -556,8 +556,7 @@ if __name__ == '__main__':
# logger.info(f'预测失败:{e}')
# continue
# predict_main()
predict_main()
# push_market_value()
sql_inset_predict(global_config)
# sql_inset_predict(global_config)