近日股市上最热的字就一个:犇。
怎么个牛呢?先上图——


6日的《新闻联播》也十分罕见地用时1分12秒隆重报道A股,介绍沪指涨近6%创2年半新高,两市成交量逾1.5万亿。

投资者热情高涨
引发部分券商App宕机
股市太火爆,挣钱效应太凶。股民、基民的热情把券商app、基金app的服务器都挤爆了。
6日上午股民反馈,部分券商app交易出现短暂的迟滞,出现堵单的情况。另外,深圳一家公募新基金发行,半天募集超过500亿,并且提前结束募集,并且官方APP也出现宕机现象。

金融板块核心爆发,银行板块呈现涨停潮,地产等低估值周期板块也大幅上涨;医药、纺服和食品饮料等板块则涨幅较小。大金融板块迎来补涨,进一步引发投资者做多热情。


股市如此火爆,你想入场吗?
程序员是时候发挥专业技能
学习炒股啦
既然都是机器学习开发者,为什么不用深度强化学习来自动模拟炒股?实验验证一下能否获得收益。
已有人对此进行了尝试。该项目的作者是一名来自哈尔滨工业大学的在读博士,同时也是一家创业公司的合伙人。
作者之前还做过很多有趣的项目,比如「微信跳一跳 Python 辅助」,以及 Python 抖音机器人,用它在抖音上找到漂亮的小姐姐(就真的还挺实用的)。
效果展示
以 1990 年年初到去年 11 月底的股票数据作为训练集,去年 12 月股票数据作为测试集。作者先用单只股票试验了一下,初始本金为 10000 元人民币(股票代码 sh.600036,招商银行),进行了为期 20 天的模拟操作,经历了一番起伏,最终盈利 400 元。

在进行单只股票试验之后,作者选取 1002 只股票进行训练,结果显示盈利率为 44.5%,不亏不赚率为 46.5%,亏损率为 9.0%。仅从盈亏率来看,效果还是不错的。


当然,作者也说了,「数据和方法皆来源于网络,无法保证有效性」,只能说是辅助决策的方法吧,Just For Fun,如果产生了什么后果,还是得自己默默承受……机器之心友情提示,股市有风险,投资需谨慎。盲目乱投资,亲人两行泪。
项目实测
所以说如何使用深度强化学习自动炒股呢?首先我们将本项目克隆到本地,并安装相关依赖环境:
!gitclonehttps://github.com/wangshub/RL-Stock
importos
os.chdir('RL-Stock')
!pipinstall-rrequirements.txt
项目作者使用证券宝来获取股票证券交易数据。证券宝是一个免费、开源的证券数据平台,里面包含大量准确、完整的证券历史行情数据、上市公司财务数据,用户可通过通过 python API 获取其数据信息。安装方式如下:
!pipinstallbaostock-ihttps://pypi.tuna.tsinghua.edu.cn/simple/--trusted-hostpypi.tuna.tsinghua.edu.cn(http://pypi.tuna.tsinghua.edu.cn/)
之后使用作者提供的数据获取代码来获取股票数据:
!pythonget_stock_data.py
由于数据集相对较大,涵盖了过去将近 30 年的股票证券交易数据,所以这一过程相对比较耗时。
最后,运行项目中的 main.py 即可对该股票交易环境进行训练或测试。测试效果如下:

以下为本项目核心代码:
importpandasaspd
fromstable_baselines.common.policiesimportMlpPolicy
fromstable_baselines.common.vec_envimportDummyVecEnv
fromstable_baselinesimportPPO2
fromrlenv.StockTradingEnv0importStockTradingEnv
defstock_trade(stock_file):
day_profits=[]
df=pd.read_csv(stock_file)
df=df.sort_values('date')
#Thealgorithmsrequireavectorizedenvironmenttorun
env=DummyVecEnv([lambda:StockTradingEnv(df)])
model=PPO2(MlpPolicy,env,verbose=0,tensorboard_log='./log')
model.learn(total_timesteps=int(1e4))
df_test=pd.read_csv(stock_file.replace('train','test'))
env=DummyVecEnv([lambda:StockTradingEnv(df_test)])
obs=env.reset()
foriinrange(len(df_test)-1):
action,_states=model.predict(obs)
obs,rewards,done,info=env.step(action)
profit=env.render()
day_profits.append(profit)
ifdone:
break
returnday_profits
从以上代码可以看到,作者首先使用 pandas 读取股票证券交易数据,之后将其输入 RL 环境中。这里使用的股票交易的 Gym 环境参考了 Stock-Trading-Environment 这一开源实现,我们仅需将获取到的数据输入该环境中,即能得到可直接用于 RL 进行训练的标准 Gym 环境 API。
项目使用的 RL 策略调用了 stable-baselines 中的 PPO 实现。stable-baselines 使用 TensorFlow 作为后端,提供了一系列优质的 RL 算法实现。使用时仅需将 RL 环境传入其中,再调用 model.learn() 即可开始对 agent 进行训练。无论是科研还是工程用途都不失为一个不错的选择。
友情提醒:股市有风险,入市需谨慎,但学习专业技能稳赚不赔,先努力做个优秀的程序员再说吧~
