楼主: kedemingshi
979 34

[量化金融] 评估常见技术交易模型的有效性 [推广有奖]

11
nandehutu2022 在职认证  发表于 2022-6-24 11:25:31
使这个偏差为平方根。\"!$(!+5#&,&&,&6。/0.7216。/0.72131&6。/0.72+&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,6。/0.72+&这个公式可以重写为求和函数,而不是分子。&6&.0。&72+现在如果你看过标准偏差公式,你可能会问为什么上面的分词是n而不是n-1。这就是所谓的自由度,如果你没有中的最终值可以查找的数据集。如果我们事先知道数据集的平均值,您只需要n-1个数据点,就可以计算出最终值。:&896&.0.&72+0;— 9-XY1Y2让我们看一些如何使用标准偏差描述波动性的示例。在5个交易日期间,两支股票从同一点开始,在同一点结束,上涨了900%。但是,差异是可见的,蓝色线(<;)波动性更大,价格出现更大、更频繁的跳跃和跳水。为了准确反映波动性,这在标准偏差中有所反映。波动性越大的股票价格的标准差越高。4.3.        K-最近邻KNN算法使用并存储所有可用数据,并根据图上的相似性度量或欧氏距离对新数据或案例进行分类。a分类阶段由用户定义k,每个新数据024681012141618201 2 3 4 5Y1 Y2:<;,=>@ABC&:<@,A>;A=D??E@D&-10-点被分配一个标签,该标签在k个现有数据点中最为常见。4.4.        逻辑回归回归(Logistic RegressionRegression)获取一个数据集,并试图找到一个数学关系/公式,将x变量与y变量联系起来。让我们举一个例子,一个面包师卖甜甜圈,x代表adozen,并赚取y美元的利润。

12
kedemingshi 在职认证  发表于 2022-6-24 11:25:35
他继续提高价格,但在一定程度上,他的利润下降了,因为现在他对十几个甜甜圈收费过高,人们不想再从他那里买了。他怎样才能找到最高价的价格,而不让顾客们被高价拒之门外呢?让我们使用以下数据来尝试预测该值。-11-每打甜甜圈的价格将其绘制在一张图上,我们可以使用回归来尝试估计利润开始下降之前的最高点。因为我们知道它先增大后减小,所以我们可以使用二次回归,并尝试应用尽可能接近的公式来预测抛物线的峰值,这将在理论上实现利润最大化。最适合该图的公式是f,0;>?@?A、 21GE>?DD.0@?@>=G、 使用这个公式,我们可以找到提供最大y值(利润)的x值,约为(15.86161.803),这意味着如果面包师每打收费15.86美元,他将以161.803.4.5美元的价格实现利润最大化。移动平均线交叉移动平均线是一种广泛使用的股票分析指标,其功能是过滤噪音并显示选定时段的总体趋势。移动平均线被认为是滞后的指标,因为它是基于过去的价格,本身只反映了过去发生的事情。-移动平均线有三种主要类型,简单移动平均线、加权移动平均线和指数移动平均线。我们将使用简单移动平均线(SMA),因为它计算简单,用途广泛。TheSMA是通过计算股票在规定时间段内的平均值来计算的。H(IJK#&L*“(+%&M”#$!%#HLM,&M/1M21MN131M4K#+%)O&*P&J#$(*\')+假设这是一个显示股票a.DateAdj移动的数据表。

13
kedemingshi 在职认证  发表于 2022-6-24 11:25:37
库存关闭第5天SMAJan 1N/AJan 2N/AJan 3N/AJan 4N/AJan5@B1@@1@E1@G1@AG,@@>DJan 6@@1@E1@G1@A1@@G、 @A>@一月7@E1@G1@A1@@1@?G、 @E>@当绘制两条移动平均线(一条长线和一条短线)时,可以使用移动平均线的交叉来预测趋势。如果短SMA穿过长SMA向上移动,则表明这是一个良好的切入点,当它穿过长SMA后,则预测一个强劲的下降趋势,因此,表明退出。-13 —5.           调查5.1。回归5.1.1。程序开发要创建线性回归模型,我们必须先做几件事。我们需要收集所选库存的用户输入,培训数据的开始日期和结束日期,以及测试数据的结束日期。然后,我们必须将数据分成两个不同的数据帧,一个用于创建和测试模型,另一个用于使用模型t0进行投资。14、ticker\\u input=输入(“请输入您想投资的股票行情。”)15。16、start\\u date=输入(“在此处输入开始获取数据的日期(请将其转换为YYYY-MM-DD格式)\\n”)17。18、test\\u date=输入(“此处输入培训和测试结束的日期(请将其转换为YYYY-MM-DD格式)\\n”)19。20.end\\u date=输入(“在此输入我们将停止从中获取数据的日期(请将其转换为YYYY-MM-DD格式)\\n”)21。22、数据=pdr。DataReader(ticker\\u input,test\\u date,end\\u date)\\[\'Adj Close\']23。索引=数据。指数tolist()24。测试日期=指数[0]25。测试数据=pdr。DataReader(ticker\\u input,start\\u date,test\\u date)-14-下载数据后,必须按照80/20的比例将其拆分为X和Y的训练数据和测试数据。然后将使用这些数据来拟合模型并测试其可信度。47

14
能者818 在职认证  发表于 2022-6-24 11:25:42
#此预测将预测未来1天48。f\\u out=int(1)49。test\\u data[\'Predicting\']=test\\u data[\'Adj Close\']。换档(-f\\U out)50。51.X=np。数组(test\\u data.drop([\'Predicting\',1))52。X=pp刻度(X)53。X\\u预测=X[-f\\u输出:]54。X=X[:-f\\u out]55。Y=np。数组(test\\u data[\'Predicting\'])57。Y=Y[:-f\\u out]58。59.X\\U列,X\\U测试,Y\\U列,Y\\U测试=tts(X,Y,test\\U大小=0.2)60。61、型号=lr()62。63、型号。安装(X\\U系列、Y\\U系列)64。65.#打印初始型号66的置信度。conf=型号。得分(X\\U测试,Y\\U测试)67。print(“Model Confidence:”,conf)现在要在投资时使用此模型,我们必须使用预测价格,看看它是否预测股票价值将增加或减少,程序将相应地进行投资。此外,为了确保测试的有效性,从预测日期之前的价格开始,直到预测之后,才使用任何数据,此时将库存的实际移动添加到训练集中并重新安装模型。94、预测=模型。预测(X\\U预测)95。索引=数据。指数tolist()96。测试日期=指数【r】97。return(预测-test\\u data.iloc[len(test\\u data)-1][\'Adj Close\'])105。对于范围(1,len(data)):106中的r。x=investing\\u模型(r)[0]107。如果x>0:108。last\\u true=last\\u true+(data.iloc[r][\'Adj Close\']-data.iloc[r-1][\'Adj Close\'])109。指示性投资。append(last\\u true)最后,使用标准差对结果进行比较,以反映波动率和使用该模型的投资的绩效百分比。27、def Performance\\u percentage():28。跑赢大市计数=0-15-29。total\\u count=0 30。全球比较31。32、对于范围内的r(0,len(比较索引)):33。

15
mingdashike22 在职认证  发表于 2022-6-24 11:25:45
如果比较[股票行情输入+\'指示性投资\']。iloc[r]>比较[股票行情输入+\'持续投资\']。iloc[右]:34。跑赢大市计数+=1 35。total\\u count+=1 36。跑赢大市百分比=(跑赢大市计数/总计数)*100 37。38、收益率优于百分比39。40、def标准偏差(data\\U list):41。new\\u list=data\\u list 42。标准偏差和=0 43。对于范围内的i(0,len(new\\u list)):44。标准偏差总和+=(new\\u list[i]-统计。平均值(new\\u list))**2 45。返回(((标准偏差和/(长度(新列表)-1))**(0.5)))5.1.2。为了测试该模型,我们将从1月1日起投资三支交易量最大的股票(AdvancedMicro Devices(AMD)、通用电气(GE)和美国银行(BAC)),以及两大主要指数(标准普尔500指数(SPY)和道琼斯指数(DJI))。2017年1月1日。2019年。对于培训数据,模型将使用2年的历史数据,即1月1日。2015年1月1日。2017.AMD持续投资最终价格:18.46指示性投资最终价格:19.09平均模型置信度:0.994跑赢率:17.33%波动率:0.7355-16-GE持续投资最终价格:7.27指示性投资最终价格:22.79平均模型置信度:0.986跑赢率:72.51%波动率:0.303BAC持续投资最终价格:24.38指示性投资最终价格:18.05平均模型置信度:0.979跑赢率:16.37%波动率:0.696SPY持续投资最终价格:248.82指示性投资最终价格:219.19平均模型置信度:0.974跑赢率:27.49%波动率:0.97-17-5.2。K-最近邻5.2.1。

16
kedemingshi 在职认证  发表于 2022-6-24 11:25:49
由于sklearn库的方便性和多功能性,KNN模型程序的程序开发与回归模型程序非常相似。我们的第一步仍然是找到用户输入的股票代码和日期,并使用它们下载数据。然后对数据进行80/20的分割,用于训练和测试数据,然后对avalue进行预测,程序根据预期回报进行相应的投资,无论是正回报还是负回报,将实际股价添加到训练数据中,并为下一次迭代重新调整模型。编程中唯一的区别是模型从LinearRegression()到neighborsregressor()的变化。此外,必须相应地缩放数据,并且必须输入k,尽管GridSearchCV在一组特定的setparameters内优化了此选择^DJI持续投资最终价格:23327指示性投资最终价格:20633平均模型置信度:0.962跑赢率:25.49%波动率:0.7335-18-49#这一预测将预测未来50年的1天。f\\u out=int(1)51。test\\u data[\'Predicting\']=test\\u data[\'Adj Close\']。换档(-f\\U out)52。53.X=np。数组(test\\u data.drop([\'Predicting\',1))54。X=pp刻度(X)55。X\\u预测=X[-f\\u输出:]56。X=X[:-f\\u out]57。58.Y=np。数组(test\\u data[\'Predicting\'])59。Y=Y[:-f\\u out]60。61.X\\U列,X\\U测试,Y\\U列,Y\\U测试=tts(X,Y,测试\\U大小=0.2)62。63.X\\u train\\u scaled=缩放器。fit\\u transform(X\\u train)64。X\\u test\\u scaled=缩放器。fit\\u transform(X\\u测试)65。参数={\'n\\u邻居\':[2,3,4,5,6,7,8,9,10,11,12,13,14,15]}67。68.#定义KNN算法和k值(k=5)69。knn=KNeighborsRegressor()70。模型=GridSearchCV(knn,参数,cv=5)71。模型安装(X\\U系列、Y\\U系列)5.2.2。

17
kedemingshi 在职认证  发表于 2022-6-24 11:25:53
为了测试该模型,我们将从1月1日起投资三支交易量最大的股票(AdvancedMicro Devices(AMD)、通用电气(GE)和美国银行(BAC)),以及两大主要指数(标准普尔500指数(SPY)和道琼斯指数(DJI))。2017年1月1日。2019年。对于培训数据,模型将使用2年的历史数据,即1月1日。2015年1月1日。2017.AMD持续投资最终价格:18.46指示性投资最终价格:6.67平均模型置信度:0.987跑赢率3.78%波动率:0.43-19-GE持续投资最终价格:7.27指示性投资最终价格:17.54平均模型置信度:0.9817跑赢率:99.6%波动率:0.528BAC持续投资最终价格:24.38指示性投资最终价格:20.17平均模型置信度:0.981跑赢率:9.96%波动率:0.383SPY连续投资最终价格:248.82指示性投资最终价格:191.45平均模型置信度:0.948跑赢率:0%波动率:0.355-20-5.3。移动平均线交叉5.3.1。程序开发要使用移动平均值来指示投资时间,我们必须编写一个python程序,该程序将使用用户输入的股票、日期和移动平均期来计算移动平均值。我们必须为用户设置一个输入,包括我们将要投资的股票的股票代码、数据的日期,以及周期的两个数字输入,其中一个将比另一个长。110.ticker\\u input=输入(“请输入您选择投资的股票代码。”)。112、start\\u date=输入(“在此处输入开始获取数据的日期(请将其转换为YYYY-MM-DD格式)\\n”)113。114.end\\u date=输入(“在此输入我们将停止从中获取数据的日期(请将其转换为YYYY-MM-DD格式)\\n”)115。

18
大多数88 在职认证  发表于 2022-6-24 11:25:56
116、MAU列表=[]117。118.ma\\u值=int(输入(“您希望移动平均线的第一个周期是什么?\\n”))119。ma\\U列表。追加(ma\\U值)120。ma\\u值=int(输入(“您希望移动平均线的第二个周期是什么?\\n”))121。ma\\U列表。append(ma\\u值)然后使用SMA的公式,我们可以定义一个函数,该函数将根据时段(开始)中最后一天的开始日期以及时段本身的长度来计算它^DJI持续投资最终价格:23327指示性投资最终价格:21064平均模型置信度:0.954跑赢率:4.98%波动率:0.397-21-H(IJK#&L*“(+%&M”#$!%#HLM,&M/1M21MN131M4K#+%)O&*P&J#$(*\'+31。def简单移动平均值(长度,起始):32。s=0 33。对于范围(0,int(length)):34中的i#打印(ticker\\U data[start-i])35。s+=ticker\\U数据[开始-i]36。然后,我们创建一个新的数据框,将移动平均数与股票数据本身分开。对于每个输入的移动平均周期值,我们需要计算日期数据输入之间的每一个移动平均值。然后,在对数据进行深入检查后,我们发现,在n个周期内,前n-1个数据点没有值,因此我们必须裁剪所有数据帧,以便从可行的数据开始,而不是从空白点开始。移动平均值=pd。数据帧(索引=ticker\\u data.index)60。对于ma\\u列表中的i:61。列表2=[]62。对于范围内的v(0,len(ticker\\u data.index)):63。如果v<i-1:64。列表2。追加(0)65。如果v>i-1或v==i-1:66。list2.append(simple\\u moving\\u average(i,v))67。moving\\u averages[股票代码输入+”“+str(i)+“日移动平均数”]=列表2 68。69.#删除所有NA值,并确保所有列表从同一日期开始70。

19
何人来此 在职认证  发表于 2022-6-24 11:25:59
ticker\\u数据=ticker\\u数据。iloc[最大值(ma\\U列表)-1:]71。moving\\u averages=移动\\u averages。当移动平均线的计算和绘图完成后,就有了如何判断移动平均线何时相交的问题。它们不太可能在一个点上相交,而是线在点之间相交,因此不可能使它们彼此相等并求解。为此,我们发现了短期趋势和长期趋势之间的差异,每当数据点和之前的数据点之间有不同的迹象时,我们就知道线交叉了。现在,这被用来表示购买、出售或继续进行任何正在发生的事情的时间。当短期超过长期并高于长期时,是时候买入了,我们将继续持仓,直到短期平均值低于长期平均值,反之亦然。计算每个数据点的移动平均值之间的差值75。def difference\\u calc(x):76。返回x[1]-x[0]77。差异=pd。数据帧(索引=ticker\\u data.index)79。80、差异=移动平均值。应用(差分计算,轴=1)81。82.#测试移动平均线之间的符号差异以感知交叉83。def测试(x):84。如果差值[x]<0且差值[x-1]>0:85。返回“卖出”86。如果差值[x]>0且差值[x-1]<0:87。返回“购买”88。如果差值[x]>0且差值[x-1]>0:89。返回“continue\\u s”90。如果差值[x]<0,差值[x-1]<0:91。return“continue\\u b”我们根据短期SMA是否高于长期SMA制定初始起始位置。

20
何人来此 在职认证  发表于 2022-6-24 11:26:02
然后,对于每个数据点,我们评估现有头寸和差异迹象的指示,以指示我们从买入到卖出的变化或头寸的变化。98、如果差值【0】>0:99。位置=“购买”100。如果差值【0】<0:101。位置=“已售出”102。103、对于范围内的r(0,len(ticker\\u data.index)):104。如果位置==“Bunded”且测试(r)==“continue\\u b”:105。last\\u true=last\\u true+(ticker\\u data[r]-ticker\\u data[r-1])106。如果位置==“买入”,测试(r)==“卖出”:107。last\\u true=last\\u true+(ticker\\u data[r]-ticker\\u data[r-1])108。位置==“卖出”109。如果位置==“卖出”,测试(r)==“买入”:110。位置=“购买”111。指示性投资。append(last\\u true)然后,如果我们要继续投资,我们会将我们投资组合的最终价格与我们的投资组合的价格一起绘制,如果我们使用SMA交叉策略来查看长期持有股票的好处,而不是通过策略性买卖来预测趋势的变化。-23 —113.  比较=pd。数据帧(索引=ticker\\u data.index)114。比较[股票行情输入+\'持续投资\']=持续投资115。比较[股票行情输入+“指示性投资”]=指示性投资最后,为了能够更准确地比较投资策略,我们可以创建函数来比较波动性和市场收盘时的百分比,使用移动平均交叉策略表现优于连续持有股票。38、def标准偏差(data\\U list):39。new\\u list=data\\u list 40。标准偏差和=0 41。对于范围内的i(0,len(new\\u list)):42。标准偏差总和+=(新列表[i]-统计。平均值(新列表))**2 43。

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

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-21 13:06