MATLAB第一次入门操作——简单股票问题

新建与导入

  • 笔者在导入的过程中一度找不到导入数据在哪,甚至直接把文件拖拽进工程,最后导致原文件里面的数据表格也不见了;后来笔者百度才发现应该是在主页这个大框下找,导入数据即可。

  • 在导入数据界面会在输出类型看到有五个选项,这里根据教材(北航出版MATLAB数学建模方法与实践),我们选择列向量,则出现如图所示显示方式。至此,获取数据的工作完成。

数据探索与建模

  • 于是笔者根据教材要求,开始在工作区查看数据具体信息,然鹅笔者没有看到书上那么详细的最小值、最大值、均值、极差等等,于是笔者又百度发现,需要右键名称那一行,选择想要看到的具体数据,如下图所示,方可。双击工作区可放大

  • 接下来,选取DateNum与Pclose变量进行绘图。

    • 法一:在命令行窗口敲下如下代码

      plot(DataNum,Pclose)
      
    • 法二:笔者根据教材说的选择两个变量然后plot,然鹅笔者百度了很久还是不知道如何选择两个变量。最后发现,点ctrl即可,笔者当场傻掉。因此,这步就是点击一个变量,ctrl长按,再点击另一个变量,在绘图大纲里面点击plot即可画出。

  • 利用doc绘画图例。

    • 在命令行窗口敲下如下代码
    doc
    
    • 然后操作MATLAB>>Graphics>>2-D and 3-D Plots>>Line Plots

评估股票的价值与风险

价值:我们希望增幅越大越好,也就是曲线的斜率越大越好。

风险:对于同样的走势,用最大回撤来描述风险更合适。

因此,接下来要做的就是计算曲线的斜率与股票的回撤。

  1. 采用多项式拟合的方法拟合数据方程,从而得到斜率。

    • 帮助》》搜索polyfit,可查看如何操作

      • 备注: polyfit()函数——采用最小二乘法进行多项式拟合。

        ​ polyfit(x,y,n); %对于数据集[x,y],找到次数为n的多项式。

        ​ [p E] = polyfit(x,y,n); %多项式系数存在p中,E在polyval函数(多项式预测:y = polyval(p,x);)中计算误差。

        ​ 使用polyfit拟合时,多项式阶次不能超过length(x)-1。

        • 出现警告的原因:可能是x值间距过小,或者有相同的x点。
  2. 获得最大回撤

    • help查询

    • maxdrawdown函数:计算最大回撤函数,即风险率

  • 至此,可以找到评估股票价值和风险的方法,但是无法方便的修改代码,故用脚本呈现整个问题的解决方法

开发脚本

导入数据脚本

  • 在快捷栏找到导入数据,选择生成脚本,然后保存脚本

获得完整脚本

%% 导入电子表格中的数据
% 用于从以下电子表格导入数据的脚本:
%
%    工作簿: C:\Users\86135\Desktop\程序_MATLAB数学建模方法与实践_卓金武等\Cha2\sz000004.xls
%    工作表: Sheet1
%
% 由 MATLAB 于 2020-10-12 21:27:49 自动生成

%% 设置导入选项并导入数据
opts = spreadsheetImportOptions("NumVariables", 8);

% 指定工作表和范围
opts.Sheet = "Sheet1";
opts.DataRange = "A2:H99";

% 指定列名称和类型
opts.VariableNames = ["Date1", "DateNum1", "Popen1", "Phigh1", "Plow1", "Pclose1", "Volum1", "Turn1"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double"];

% 导入数据
tbl = readtable("C:\Users\86135\Desktop\程序_MATLAB数学建模方法与实践_卓金武等\Cha2\sz000004.xls", opts, "UseExcel", false);

%% 转换为输出类型
Date1 = tbl.Date1;
DateNum1 = tbl.DateNum1;
Popen1 = tbl.Popen1;
Phigh1 = tbl.Phigh1;
Plow1 = tbl.Plow1;
Pclose1 = tbl.Pclose1;
Volum1 = tbl.Volum1;
Turn1 = tbl.Turn1;

%% 清除临时变量
clear opts tbl
  • 这是导入数据的脚本
%%数据探索
figure %创建一个新的图像窗口
plot(DateNum,Pclose,'k') %将图的颜色设置为黑色(打印后不失真)
datetick('x','mm'); %更改日期显示类型
xlabel('日期'); %x轴说明
ylabel('收盘价'); %y轴说明
figure
bar(Pclose) %作为对照图形
  • 画出figure1以及figure2的脚本

%%股票价值的评估
p = polyfit(DateNum,Pclose,1); %多项式拟合
P1 = polyval(p,DateNum); %多项式计算求值函数
figure
plot(DateNum,P1,DateNum,Pclose,'*g');
value = p(1)
MaxDD = maxdrawdown(Pclose);
risk = MaxDD

项目展示

  • 展示的形式:
    1. 能够独立运行的程序,比如脚本;
    2. 报告或者论文;
    3. 软件和应用;
  • 利用publish快速发布报告
    1. 在发布面板选择编辑配置
    2. 选择输出文件格式,默认html,可改为word

至此,憨憨作者的艰辛matlab路正式开始了


本文章使用limfx的vscode插件快速发布