以下是使用MATLAB完成的。
我正在尝试使用深Q学习来构建交易算法。我刚刚花了一年的时间股价,并将其用作培训。
我的状态空间是我的 [money, stock, price]
money 是我拥有的现金数量,
stock 是我拥有的股票数量,
price 是当时股票的价格。
我遇到的问题是行动;在线寻找,人们只有三个动作, { buy | sell | hold }.
我的奖励功能是当前时间步骤中投资组合值的值与上一个时间步长之间的差异。
但是,只使用三个动作,我不确定如何选择购买,可以说67股股票?
我正在使用神经网络来近似Q值。它有三个输入 [money, stock, price] 和202个输出,即我可以出售0到100股数量,0,我可以持有股票,也可以购买1-100股股票。
任何人都可以阐明如何将其减少到3个动作?
我的代码是:
% p is the stock price
% sp is the stock price at the next time interval
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
hidden_layers = 1;
actions = 202;
net = newff( [-1000000 1000000;-1000000 1000000;0 1000;],
[hidden_layers, actions],
{'tansig','purelin'},
'trainlm'
);
net = init( net );
net.trainParam.showWindow = false;
% neural network training parameters -----------------------------------
net.trainParam.lr = 0.01;
net.trainParam.mc = 0.1;
net.trainParam.epochs = 100;
% parameters for q learning --------------------------------------------
epsilon = 0.8;
gamma = 0.95;
max_episodes = 1000;
max_iterations = length( p ) - 1;
reset = false;
inital_money = 1000;
inital_stock = 0;
%These will be where I save the outputs
save_s = zeros( max_iterations, max_episodes );
save_pt = zeros( max_iterations, max_episodes );
save_Q_target = zeros( max_iterations, max_episodes );
save_a = zeros( max_iterations, max_episodes );
% construct the inital state -------------------------------------------
% a = randi( [1 3], 1, 1 );
s = [inital_money;inital_stock;p( 1, 1 )];
% construct initial q matrix -------------------------------------------
Qs = zeros( 1, actions );
Qs_prime = zeros( 1, actions );
for i = 1:max_episodes
for j = 1:max_iterations % max_iterations --------------
Qs = net( s );
%% here we will choose an action based on epsilon-greedy strategy
if ( rand() <= epsilon )
[Qs_value a] = max(Qs);
else
a = randi( [1 202], 1, 1 );
end
a2 = a - 101;
save_a(j,i) = a2;
sp = p( j+1, 1 ) ;
pt = s( 1 ) + s( 2 ) * p( j, 1 );
save_pt(j,i) = pt;
[s_prime,reward] = simulateStock( s, a2, pt, sp );
Qs_prime = net( s_prime );
Q_target = reward + gamma * max( Qs_prime );
save_Q_target(j,i) = Q_target;
Targets = Qs;
Targets( a ) = Q_target;
save_s( j, i ) = s( 1 );
s = s_prime;
end
epsilon = epsilon * 0.99 ;
reset = false;
s = [inital_money;inital_stock;p(1,1)];
end
% ----------------------------------------------------------------------
function[s_prime,reward] = simulateStock( s, a, pt, sp )
money = s(1);
stock = s(2);
price = s(3);
money = money - a * price ;
money = max( money, 0 );
stock = s(2) + a;
stock = max( stock, 0 );
s_prime = [money;stock;sp];
reward = ( money + stock * price ) - pt;
end
您可能是对的,那就是使用一系列 { buy | hold | sell } 行动是学术论文的经常习惯,作者有时会决定说明他们在改善学习 /统计方法方面的学术努力,并选择在交易领域中选择模范应用。可惜的是,这可以在学术论文中完成,但不能在交易的现实中完成。
即使对交易有基本的看法,问题也更加复杂。作为简短的参考,有 超过五个主要领域 这种模型空间。鉴于交易要进行建模,如果没有完全描述的策略,就不能留下来 -
Tru-Strategy := { SelectPOLICY,
DetectPOLICY,
ActPOLICY,
AllocatePOLICY,
TerminatePOLICY
}
任何有动力的简化,都选择忽略这五个主要领域的任何一个领域的任何一个领域都将成为任何一种真正的交易策略。
人们可以轻松地弄清楚,仅仅训练(以后利用这种模型进行实际交易)带来了一个不确定的模型,这与现实不一致。
当然,它可以到达(并将再次(除非构型最小化的标准函数))一些数学函数的最低限度,但这并不能确保现实立即改变它的自然行为,并且 启动“服从”不确定的模型 并根据这种过于简单的或以其他方式偏向现实的偏斜(模型)的“跳舞”。
如果疑问这意味着什么,请尝试按照一个例子:
今天,策略模型决定 A:Buy(AAPL,67).
明天, AAPL 下降,约0.1%,因此即时奖励(如上所述)是负面的,因此惩罚了这种决定。刺激了该模型不这样做(不要购买AAPL)。
关键是,一段时间后,AAPL上升得更高,与D2D初始波动相比,奖励更高 Close,这是已知的,但是提出的策略模型Q-Fun根本没有反映出完全错误的反映。
这意味着可以按照这种定义的刺激来训练AS-IS模型,但实际行为只会有利于如此天真的盘中 “准级” 实际市场状态&amp;的射击有限(如果有的话)支持许多行业公认的定量模型都可以使用市场动态。
所以, 当然, 一个人可以训练一个现实盲模型,该模型被盲目;聋 (忽略问题域的现实), 但是是什么原因?
结语:
没有什么比数据科学"
即使Marcom&amp;人力资源打鼓&amp;吹口哨,如今他们确实做了很多
为什么?
正是因为上述观察到的理由。拥有数据点是什么。当然,它比没有对现实的观察到的,但数据点并不能保存游戏要好。
是域知识,从数据点开始有意义,而不是数据点 本身.
如果仍然有疑问,如果一个人数有几个数字,则没有 数据科学 告诉您,数据点表示什么。
另一方面,如果知道,从特定于域的上下文中,这些数据点应该是温度读数,仍然没有 数据科学 上帝要告诉你,[°K]或[°C]中是否有全部(仅是偶然)(如果有正面的读数&gt; = 0.00001)。
用户界面测试 1 、导航测试 导航直观 Web系统的主要部分可通过主页存取 Web系统不需要站点地图、搜索引擎或其他的导航帮助 Web应用系统的页面结构、导航、菜单、连接的风格一致 2 、图形测试 图形有明确的用途 所有页面字体的风格一致。 背景颜色与字体颜色和前景颜色相搭配。 图片的大小减小到 30k 以下 文字回绕正确 3 、内容测试 Web应用系统提供的信息是正确的 信息无语法或拼写错误 可...
实验环境: 建站环境:Windows操作系统,基于ECS部署LAMP环境,阿里云资源, Web服务器:Apache,关联的数据库:MySQ PHP:Drupal 8 要求的PHP版本為7.0.33的版本 实验内容和要求:基于ECS部署LAMP环境搭建Drupal网站,drupal是一个好用且功能强大的内容管理系统(CMS),通常也被称为是内容管理框架(CMF),由来自全世界各地的开发人员共同开发和...
禁止start page启动 1、方法1:User Preferences Editor中设置 2、方法2:env文件中修改 电路精灵是什么? 1、方法1:User Preferences Editor中设置 输入 page 点击Search按钮,勾选allegro_no_startpage。点OK搞定。 2、方法2:env文件中修改 打开home里的env文件。 添加 set allegro_n...
在很久没有使用虚拟机之后,我发现才用了一天的神级骚操作,为了给自己长点记性,先写下来再说 第一篇 虚拟机硬盘故障问题 分配空间20G结果当前大小130G是怎么肥四!!! 最后经过探讨,一致得出 我的虚拟机太迷了。。。估计是s001那个文件出了什么爆炸性问题吧 亏自己还进行了图三的一系列操作。。。 给的建议都是:你重装吧(说出来都是泪) 如果有大佬能告知是啥情况也好。。。 不过(划重点敲黑板) 除开...
基本一直点击下一步就可以了 此版本的可视化工具无法安装 双击安装包 点击 next next下一步 选择安装方式 选择目录 正式安装 这个为可视化工具,但是安装不了,选择了会卡在 80%(其实已经功能安装完成,就是没有可视化工具) 检测是否安装成功 cmd 输入 mongo 出现错误信息 解决地址...
1.FTP - authentication 追踪流TCP直接查看明文 2.TELNET - authentication 追踪流TCP 明文 3.ETHERNET - frame 先hex解码,再base64解码...
搜索这个名字,你能读到和这家店有关的一些故事,据说老板娘是从上海搬来福州的,因为怀念小时候所吃到的上海家常菜,再加上父母的愿望,因此开了这样一家店。店面位于居民区中,并不太显眼,坐在店内,都能听到外面小区中的孩子玩耍的喊声。附近是有一所市级中学十八中,这家店也是深受中学生青睐的地方。菜品味道清淡,很有微博上一些博主所描述的「妈妈味道」的感觉。选一个假期,和另一半逛累了,就在这个地方吃一顿家常菜,这...
(1)直接在环境变量中删除配置的相关路径 path的值: 删除配置的Oracle变量,如下所示: (2)执行java -version命令后报错 按提示更改注册表的相关键值: 重新打开一个cmd,执行java -version,命令正常执行: ...
直接上代码(注意最后结尾总结) 响应 引用手册解释 empty用于做是否有值的判断 isset用于做变量是否存在判断 需要注意的是 isset 测试的变量值为null的时候会返回false 值为 空、0、false、空数组的时候返回的是true...
问题:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示? 开门见山: 说白了就是最新的Tomcat8.5版本的webapps下无欢迎页 Docker内的webapps目录 Tomcat7.0下的目录 怎么才看看到小猫呢 1.Docker内下载7.0版本的Tomcat 2.自己制作新的镜像(初学者可以尝试一下)...
I am new in python, Here I want to create dataproc cluster using http request. I am following below dataproc documentation where they mentioned in REST API section. see below https://cloud.google.com/...
I am using AddStringWithValue method in ASP.NET using C# My HTML code is My C# code for the method is: The problem is, it is giving red underline under email and password. Shouldn't we identify them w...
I'm trying to apply this css: this works well, the problem is that the web app can set a class on the body called white-content, if the white-content class is setted, then I can't see the text of h2, ...
So I am struggling with some logic for collision detection in my game. I have a grid of tiles(images), all representative of a value in a 2D array, so the location of tile N would be (column m, row n)...
Im trying to order a list on multiple parameters.. for example, one value descending, second value ascending, third value descending. is there a way like this to do it? (i know is incorrect) people = ...