Albuslyu and Oliverliu 2023.12.9
client和九坤官方网站(https://trading.competition.ubiquant.com/main) 进行交互。所有股票数据为真实信息,一共29支股票。
client_python中拥有你所有需要的函数。 发送交易请求需要sendOrder函数,而获取股票信息需要Getlimitorderbook函数。 bot通过每次调用work()函数进行操作,其中也是我们的核心策略。 模拟盘时间与实际不一致,模拟盘4h(9:30-11:30,13:30-15:30)与真实时长25min等价。每半小时为模拟盘的一天,最后五分钟用于模拟平台结算并记录数据。
pnl:当日持仓+现金价值与初始资金之差。初始资金为100w。
sharp:收益曲线的陡峭程度。
最终的score由二者综合得出(sharp*pnl的加权)
dataset里的数字标号是原始数据,rebuild_data是计算出训练指标的数据。
client_c是基于c++的客户端,另一个是基于python的。
main.py里是基于SVM进行决策的bot,client_1206是基于press指标的。(值得一提的是,press指标也是SVM训练的输入之一)
SVM通过输入35维向量来预测return列,核函数为多项式(经测试后优于其他函数),poly=3,C,gamma参数需要手动调试。
从模拟效果来看,press指标的操作比SVM要更加稳健,测试平均收益远好于SVM。推测应该是加入非训练数据后,SVM模型对于新的输入鲁棒性不足,导致产生预测值的“爆炸”:可能会出现10的20次方的结果。为了修正这一偏差,对于预测决策的判断从原本的“预测为正购买,预测为负卖出”改为“预测值在已有预测结果80%分位以上购买,20%分位以下卖出”的策略,在一段时间内收益能达到单日单支股票(stock3)1000pnl的收益。但在继续加入新数据后,SVM效果依旧会变的很差,甚至无法保证平均收益不亏损。
Press指标的定义在买卖压力指标.txt中,由Oliverliu提出,事实证明,这是一个很好的衡量指标,在bot操作得当(止盈、持仓规模控制模块不出错)的情况下能达到平均单日400pnl以上的收益,峰值pnl能达到8500.
12.9:所有测试结果和过往数据在online文件夹中。文件后缀代表了数据范围(exp.7&8表示是第七天和第八天的数据)。