欢迎您,请 登录 或 立即注册

同城信息网

搜索
热搜: 活动 交友
查看: 2913|回复: 0
收起左侧

是时辰抄底了?强化进修炒股,走向人生顶峰(或倾家荡产)

[复制链接]

6878

主题

456

回帖

7354

积分

超级版主

Rank: 8Rank: 8

积分
7354
发表于 2020-4-7 17:44:26 | 显示全部楼层 |阅读模式 |北京市大兴区 联通
受新冠疫情和油价下跌的影响,近期的全球股市就像过山车一样刺激。

s1.jpeg


3 月上旬,美国道琼斯指数出现了下跌熔断。伯克希尔哈撒韦 CEO 巴菲特的谈吐让众人惊骇。

「假如你对峙充足长的时候,你将在市场中目击一切能够的情况,」3 月 8 日,沃伦·巴菲特在接管采访时说道。「但这能够是我 89 年人生以来第一次履历这样的事。但假如一个市场是立即运转的,它就会对消息发生很大反应。」

在那时,巴菲特以为市场还没有出现 2008 年或是 1987 年那样的发急,但今年的三月对于一切投资者来说必定是一段史无前例的履历——很快,美股又履历了屡次下跌熔断。

史无前例的情况也许也意味着绝无唯一的机遇,对于想要致富的我们来说,大胆抄底成为了一种挑选。

s2.jpeg


但剧情成长到这里通常为这样:一番毛病操纵后,成果惨绝人寰,第一次买股票就被股市一段暴打。

痛定思痛,我们应当换一个思绪:既然都是机械进修开辟者,为什么不用深度强化进修来自动模拟炒股?尝实考证一下能否获得收益。

已有人对此停止了尝试。该项目标作者是一位来自哈尔滨产业大学的在读博士,同时也是一家创业公司的合股人。

s3.jpeg


作者之前还做过很多风趣的项目,比如「微信跳一跳 Python 帮助」,以及 Python 抖音机械人, 用它在抖音上找到标致的蜜斯姐 (就真的还挺适用的)。

作者主页:https://github.com/wangshub

结果展现

s4.jpeg


在停止单只股票实验以后,作者拔取 1002 只股票停止练习,成果显现盈利率为 44.5%,不亏不赚率为 46.5%,吃亏率为 9.0%。仅从盈亏率来看,结果还是不错的。

s5.jpeg


s6.png


固然,作者也说了,「数据和方式皆来历于收集,没法保证有用性」,只能说是帮助决议的方式吧,Just For Fun,假如发生了什么结果,还是得自己冷静承受……机械之心友谊提醒,股市有风险,投资需谨慎。自觉乱投资,亲人两行泪。

项目实测

所以说若何利用深度强化进修自动炒股呢?首先我们将本项目克隆到当地,并安装相关依靠情况:

!git clone https: //github.com/wangshub/RL-Stock

importos

os.chdir( 'RL-Stock')

!pip install -r requirements.txt

项目作者利用证券宝来获得股票证券买卖数据。证券宝是一个免费、开源的证券数据平台,里面包括大量正确、完整的证券历史行情数据、上市公司财政数据,用户可经过经过 python API 获得其数据信息。安装方式以下:

!pip install baostock -i https:/ /pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn (http://pypi.tuna.tsinghua.edu.cn/)

以后利用作者供给的数据获得代码来获得股票数据:

! pythonget_stock_data.py

由于数据集相对较大,涵盖了曩昔快要 30 年的股票证券买卖数据,所以这一进程相对对照耗时。

最初,运转项目中的 main.py 即可对该股票买卖情况停止练习或测试。测试结果以下:

s7.png


以下为本项目焦点代码:

importpandas aspd

fromstable_baselines.common.policies importMlpPolicy

fromstable_baselines.common.vec_env importDummyVecEnv

fromstable_baselines importPPO2

fromrlenv.StockTradingEnv0 importStockTradingEnv

defstock_trade(stock_file):

day_profits = []

df = pd.read_csv(stock_file)

df = df.sort_values( 'date')

# The algorithms require a vectorized environment to run

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

fori inrange(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 停止练习。不管是科研还是工程用处都不失为一个不错的挑选。

stable-baselines 官方主页:

https://stable-baselines.readthedocs.io/en/master/index.html

PPO 简介

PPO 算法的全称是 Proximal Policy Optimization(近端战略优化),是 OpenAI 在 2017 年公布的一种强化进修算法。该算法的实现和调参非常简单,在强化进修中的表示优于那时一切顶尖算法的水平,是以被 OpenAI 作为强化进修研讨中的首选算法。

PPO 是战略梯度的一种改良算法,可以让我们在复杂和具有应战性的情况中练习 AI 战略。战略梯度算法对步长非常敏感,可是又难以挑选合适的步长,在练习进程中新旧战略的的变化差别假如过大则晦气于进修。

PPO 提出了新的方针函数,可以在多个练习步调中实现小批量的更新,处理了战略梯度算法中步长难以肯定的题目。实在 TRPO 也是为领会决这个题目,可是相比之下,PPO 算法更轻易求解。

PPO 的方针函数以下:

s8.jpeg


PPO 算法在强化进修中有着普遍的利用,如 OpenAI 的 Dota2 智能体、腾讯王者光荣智能体绝悟等都利用了这项技术。

可以看到,本项目并不触及很深邃的数学常识,利用的练习情况与 RL 算法也均为其他开源实现,焦点代码不跨越 10 行,却有着不错的结果。在工程实现上,有的时辰一个好的创意也许要比复杂的代码实现重要。




上一篇:交通、交警“巡回式”行动,超限近200%“大家伙”被轮重检测仪查
下一篇:早起半小时给家人做盘早餐饼,做法简单,外酥里嫩口感劲道
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

扫码小程序,到平台发布信息。
快速回复 返回顶部 返回列表