2024美赛C题股票投资策略回顾讲解,教你正确打数学建模比赛

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
读题:

看到关键词:敏感程度 ,就知道这是一个敏感度分析,因为太常见了,你一定要知道。继续仔细读题,什么的敏感程度?交易成本!交易成本有什么?我们是还不知道那1000美元怎么比例分配的吧,第二问我们就证明出它是个最佳策略了,就是最赚钱的嘛,虽然我们还不知道怎么证明,应该就是控制这个比例,交易成本?是不是还在想把1000美元变成2000,3000?这个没多大意义,跟控制这个比例是一样的。
1.4 第四问
题目说到:传达策略,模型,结果,三点内容。
策略:百度一下股票投资测类,发现是有很多种,我们在第一问应该只是随便选取的一种,投资是有风险的,我们无法证明哪个策略好,风险高的一半回报大,但是亏也有可能大。所以我们可以在这讲一下第一问的策略,在多提出几种方案(百度请)。
模型:再介绍一下模型的优缺点?
结果:把结果贴出来,用自己的语言描述一下。
2.1 思路方法指导
首先给大家说一个产业链坑,很多人一打数学建模比赛就会百度:xx数学建模思路,如果你是小白,那么我建议你可以参考,可以给你提供一个方向,你应该更绝那样的方向去自行搜索更多准确的资料,但是基本都是错误的思路,不要相信它什么985团队,扯犊子的,我们数模圈几乎是没有人有人能给你提供思路,有能力的人不会出来说话,半斤八俩的人就是在网上开始收割韭菜,瞎扯点思路,然后跳转面包多(以后遇到在这里买的,基本都不靠谱),不针对任何人,也不是针对面包多这个产品,我实话实说,所以一定要靠自己,打比赛不要着急,第一天你可能什么思路都没有,你能做的可能都是百度,查到有用的资料就保存起来给团队一起看,大家都觉得好那就一定有用。
上面我说到:百度。我说的百度不是真的让你用百度,这仅仅是因为大多数人用的是百度,百度已经成了搜索的代有名词,我的建议是对你的浏览器换搜索引擎,至少你应该用:bing引擎,最好是使用谷歌引擎。
哪里换浏览器引擎?设置-搜索引擎

顺便说一下,个人建议浏览器用谷歌浏览器。我一般会怎么搜私聊,如果我是很着急学习一门技术,需要最快时间定位到最好的资料,我会使用谷歌引擎,如果自己没多大需求,我就换回bing引擎。再说一下:谷歌引擎会让你进入全新的学习世界。
比如说我看到这个题就是讲的股票投资,我会如何搜索?
这样?

不,应该这样:(这是bing引擎)

这是谷歌搜索:

看来第一篇很不错,排在越上面,说明质量越好的,多查类似资料,我们可以由此确定方向具体化:量化投资股票。
2.2 第一问思路
根据题目可以看出是要预测,注意预测不要站在上帝视角预测,是根据已有数据预测,所以怎么查资料?

懂了吧?多参考几篇写得好的,认真阅读,把他们提到的模型拿来改改符合题目要求是不是就可以了?加上股票风险分析之类的,自己搜一下就会了。
2.3 第二问思路
证明策略好坏?那就是对策略好坏做个评价呗。这个确实不知怎么想,所以继续搜索:

经过多篇文章查询,我们是可以确定到这样一个方法:回测
然后我们会看到这样的标题很符合我们的题目:
认真读一下题,确实很符合,于是我多看了几篇,发现有专门的回测模块,于是就去搜索回测模块,经过查询体验最好的是Backtrader,然后呢就继续学习一下框架吧,就能做出来了,不难的,在这里我给大家展示一个实现代码,会有类似效果:
主要模块安装,其它模块自行安装:
!pip install backtrader
模块导入:
import datetime
from datetime import datetime
import pandas as pd
import pandas_datareader.data as web
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style(‘whitegrid’)
import backtrader as bt
import backtrader.feeds as btfeeds
获取比特币范围数据:
start = datetime(2016, 9, 11) # or start = ‘9/12/2016’
end = datetime(2021, 9, 12)
df= web.DataReader(‘BTC-USD’, ‘yahoo’, start, end)#雅虎财经获取比特币数据
print(df)

下面以一个简单的单均线策略为例,展示backtrader的使用过程,即当收盘价上涨突破20日均线买入(做多),当收盘价下跌跌穿20日均线卖出(做空):
class my_strategy1(bt.Strategy):
#全局设定交易策略的参数
params=(
(‘maperiod’,20),
)
def init(self):
#指定价格序列
self.dataclose=self.datas[0].close
初始化交易指令、买卖价格和手续费
self.order = None
self.buyprice = None
self.buycomm = None
#添加移动均线指标,内置了talib模块
self.sma = bt.indicators.SimpleMovingAverage(
self.datas[0], period=self.params.maperiod)
def next(self):
if self.order: # 检查是否有指令等待执行,
return
检查是否持仓
if not self.position: # 没有持仓
#执行买入条件判断:收盘价格上涨突破20日均线
if self.dataclose[0] > self.sma[0]:
#执行买入
self.order = self.buy(size=50)
else:
#执行卖出条件判断:收盘价格跌破20日均线
if self.dataclose[0] < self.sma[0]:
#执行卖出
self.order = self.sell(size=100)
股票数据读取:
#先引入后面可能用到的包(package)
import pandas as pd
from datetime import datetime
import backtrader as bt
import matplotlib.pyplot as plt
%matplotlib inline
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams[‘font.sans-serif’]=[‘SimHei’] #使用tushare获取浦发银行(代码:600000)数据。
#使用tushare旧版接口获取数据
import tushare as ts
def get_data(code,start=‘2016-09-11’,end=‘2021-09-09’):
df=ts.get_k_data(code,autype=‘qfq’,start=start,end=end)
df.index=pd.to_datetime(df.date)
df[‘openinterest’]=0
df=df[[‘open’,‘high’,‘low’,‘close’,‘volume’,‘openinterest’]]
return df
dataframe=get_data(‘600000’)
#回测期间
start=datetime(2010, 3, 31)
end=datetime(2020, 3, 31)
加载数据
data = bt.feeds.PandasData(dataname=dataframe,fromdate=start,todate=end)
初始化回测系统:
cerebro = bt.Cerebro()
#将数据传入回测系统
cerebro.adddata(data)
把刚刚的交易策略添加进系统:
cerebro.addstrategy(my_strategy1)
设置起始资金1000:
startcash = 1000
cerebro.broker.setcash(startcash)
设置手续费0.1%:
cerebro.broker.setcommission(commission=0.001)
执行:
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)