股票类app怎么开发?AI工程案例开发自主股票交易系统

财经 app 开发是一种针对财经资讯、投资理财、金融市场等领域的移动应用程序。以下是财经 app 开发的主要功能:实时财经资讯:用户可以通过 app 获取实时的财经新闻、宏观经济数......

股票类app怎么开发

接下来具体说说AI工程案例开发自主股票交易系统

AI工程案例:开发自主股票交易系统

原创 玉明 砺道智库 2023-08-13 21:21 发表于北京

IEEE网日前登载马塞尔·格罗特和贾斯汀·博格纳的文章称,研究人员开发了一个基于人工智能的系统,使用机器学习模型预测股票价格,并根据结果自动执行交易。

许多系统使用人工智能(AI)来解决复杂的问题。虽然这通常会提高系统效率,但开发可用于生产的基于人工智能的系统是一项艰巨的任务。因此,需要扎实的人工智能工程实践来确保最终系统的质量并改进开发过程。虽然已经提出了一些用于开发基于人工智能的系统的实践,但应用这些实践的详细实践经验却很少。

如今,越来越多的关键软件系统基于人工智能(AI)和机器学习(ML),例如自动驾驶汽车、电**理软件或自主股票交易系统。虽然这实现了以前不可能实现的功能,但基于人工智能的系统也带来了额外的复杂性和新的工程挑战。例如有效管理大量数据、确保系统安全性和可靠性、管理新型技术债务或选择正确的架构。由于关键系统的故障可能会产生严重的负面后果,因此确保所开发系统的质量非常重要。为了实现这一目标,软件工程研究和实践为传统软件系统的开发提出了许多指南和最佳实践,并且它们的使用在过去40年中大幅增加。

研究选择的一个流行示例是使用机器学习来预测股票价格走势以支持股票交易。有许多关于此用例的可行机器学习模型的论文、,这使得从更全面、以系统为中心的角度来看待这个主题变得特别有趣。此外,开发这样一个自主股票交易系统非常复杂,不能被视为“玩具示例”,并且具有足够的挑战性,需要良好的工程实践。对于这样的系统有许多不同的投资策略。它们可以根据投资者在出售股票之前打算持有股票的时间进行细分。研究主要考虑持有投资时间少于一天的情况。这被描述为日内交易。在某些情况下,还考虑持有投资较多一周,这称为短期投资。

为了保持评估实践的数量可控,研究人员选择了10个实践进行案例研究。目标是提高多个类别的质量,例如数据、培训、部署等,但也挑选了一些研究预计会对大多数开发过程产生影响的实践。选择了以下做法:

1. 标准化和自动化数据质量检查程序,以确保仅使用有效数据进行训练或测试。

2. 使用错误验证和分类来深入了解ML模型何时以及为何失败,从而提高其可靠性。

3. 以易于测量和理解的指标来捕获训练目标,以提高可解释性并避免纠缠的测量。

4. 使用交叉验证来避免在已经见过的数据上测试ML组件。

5. 持续测量模型质量、性能和漂移,以便尽早发现并修复错误。

6. 检查模型训练脚本以确保其质量。最初的做法是提出同行评审。由于研究案例研究中的大部分开发都是由一名开发人员完成的,因此研究概括了这种做法,以便同一开发人员稍后进行审查。

7. 测试所有特征提取代码,以确保转换后的数据一致且准确。

8. 自动执行超参数优化和模型选择,以节省探索时间并提高模型质量。

9. 将预测结果与模型版本和输入数据一起记录,以提供有关如何改进模型的见解。最初的做法建议在部署后记录预测。因为研究希望这种做法在其他地方有用,所以研究将其推广到也可以在开发和测试期间使用。

10. 与多学科利益相关者合作,通过特定领域的知识简化开发并改进最终的软件。最初的实践只考虑与团队成员的协作,但研究将这种实践推广到另外包括相关的外部利益相关者。

交易系统完全用Python编程。它由几个从主文件调用的模块化Python文件组成。对于智力创造而言,机器学习培训组件使用历史股票数据的大型数据集训练ML模型。在此过程中,特征提取组件用于提供训练输入。最终模型被嵌入到机器学习预测组件,对应系统的智能实现。该组件是从主要的组件通过接收到的数据近期市场数据组件,该组件又从外部API获取数据。然后将这一推断的结果,即最有前途的股票交给商人组件,它再次使用外部API来投资这些股票。

Pandas用于存储提取的特征,而ML训练的历史库存数据存储在CSV文件中。对于每只股票,每个历史日代表一个由七个特征组成的数据点:前一天*高价和最低价之间的相对差异、收盘价和开盘价之间的相对差异、过去7、14和21日价格的移动平均线天数、标准差除以过去7天的移动平均线,最后是前一天的库存量。此外,每个数据点都根据当天的*高股价涨幅进行标记。在股市开盘前,运行系统使用AlpacaAPI接收过去21天的股票数据,以创建训练数据格式的数据点。

一组k最近邻模型预测当天最赚钱股票的排名。股市一开盘,系统就会买入前五只股票的股票,并根据预测设定止盈价格加上预先设定的止损价格。无需监控投资,因为一旦达到止盈或止损价格,交易平台会自动出售所购买的股票。此外,系统会在股市收盘前三分钟出售所有剩余股票。这避免了一天内大量的API调用。研究决定该系统应该投资于纳斯达克股票市场,因为这是全球最大的股票交易电子市场。

股票类app怎么开发?AI工程案例开发自主股票交易系统

系统架构图

机器学习实施对系统设计的巨大影响

一开始的一个基本设计问题围绕着系统如何选择要投资的股票。最初,研究考虑预先过滤股票,例如基于价格的强劲上涨,以减少必要的预测数量。此外,研究不确定用于预测的具体库存数据。日内数据似乎是最有希望的,但在开发阶段,使用这些数据训练的模型都没有足够的精度,这使研究也考虑了每日股票数据。其中许多问题强烈影响了系统的架构和工作流程。例如,如果模型仅使用每日股票数据,则可以在股市开盘前进行预测。

解决方案:一旦研究意识到这种强大的影响力,研究就将重点放在机器学习组件上,通过实施和比较具有不同投资策略的各种机器学习模型来检测最有效的股票预测方法。只有在研究找到了最有效的策略之后(使用每日股票数据;只考虑前一天至少上涨10%的股票;开盘就买入股票;一旦预测盈利、预定损失就卖出股票),或者一天结束了),然后研究改变了整体系统设计和工作流程以匹配这一策略。

寻找机器学习训练的有效数据源

虽然Alpaca API非常适合在运行时检索最近的股票价格,但对历史ML训练数据的要求却截然不同。为了找到合适的来源,研究进行了更系统的搜索,结果表明最流行的API是Alpha Vantage API。与其他选项相比,它提供了最佳的数据质量、历史记录和粒度。

高效检索ML训练数据

Alpha Vantage API提供过去720天的库存数据。一只股票的数据分为24个CSV文件,每个文件代表30天,API每天允许500个请求(即文件)。因此,检索所有4,927只纳斯达克股票的数据需要237天。该API还限制每分钟5个请求。

解决方案:由于这些限制,研究决定只关注市值至少为20亿美元的股票。在纳斯达克,共有707只股票。检索他们的数据需要16,968个API请求,即500个请求花了34天。此外,检索脚本需要在请求之间等待足够长的时间,以遵守每分钟5个请求的限制。在收到大约400只股票的数据后,研究决定首先专注于开发有效的模型,然后再检索更多股票。

特征提取

当研究仍然使用日内数据训练模型时,训练数据大小为3.57GB。提取特征需要3到18分钟,这大大减慢了调整过程。由于研究在调优过程中经常更改特征,因此存储提取的特征并不能解决这个问题。

解决方案:作为一种解决方法,研究决定仅使用10只股票的数据,其特征提取时间不到一分钟。一旦使用这个小数据集的调整过程得到了令人满意的模型,研究就开始在更大的数据集上测试模型。之后,研究静态存储提取的特征,因为加载它们只需要不到一秒的时间。这完全解决了问题,但只有在特征选择稳定时才有效。当研究后来切换到每日数据时,特征提取时间减少到平均14秒,这也不再是问题。

数据质量

许多检索到的日内文件包含空白。在大多数情况下,只缺失几分钟,但间隙有时可能长达数小时、数天,甚至在极少数极端情况下长达数月。很难估计这些差距的负面影响,这使得确定合理的阈值变得具有挑战性。编写复杂的脚本来检查所有文件也需要额外的工作。

解决方案:自治系统需要基本级别的自动数据质量保证。因此,研究实施了自动化质量检查程序。为了避免过于复杂的解决方案和较长的运行时间,研究使用每个文件的行数作为指标。如果文件包含的行数少于100行,则将从训练集中删除完整的关联股票数据。事实证明,选择一个简单的解决方案是正确的决定,因为研究后来还是转向了每日数据。在开始模型开发之前为提高数据质量付出更多努力会浪费时间。早期,研究建议首先在一小部分高质量数据上开发一个令人满意的模型,然后再花费大量时间来提高整体数据质量。

文件管理

研究总共收到了412只股票的9,888个文件,这不仅难以管理,也使培训过程变得不必要的复杂。如果每个股票只有一个文件,训练脚本会简单得多。

解决方案:研究修改了股票数据检索脚本,以便对每个收到的股票执行此合并。这需要一些额外的工作,特别是因为需要重新排序文件内容。尽管如此,这极大地简化了特征提取代码,从而提高了代码的可理解性并简化了剩余的开发。

选择有效的机器学习算法

对文献的初步调查显示,许多专家建议使用支持向量机(SVM)来预测股票走势。然而,这种类型的模型在研究的数据上表现不佳。因此,研究开始使用不同的数据集(日内或每日数据)手动测试许多不同的模型,但最初无法确定明显的获胜者。

解决方案:研究创建了一种自动模型选择方法来以*高精度检测模型。最初,决策树取得了较好的结果,但随着特征选择的变化,其他模型表现较好。最后,模型选择方法表明k近邻具有较好的精度,因此研究更加注重改进此类模型。

财经app开发都有哪些功能

财经 app 开发是一种针对财经资讯、投资理财、金融市场等领域的移动应用程序。以下是财经 app 开发的主要功能:

股票类app怎么开发?AI工程案例开发自主股票交易系统
  1. 实时财经资讯:用户可以通过 app 获取实时的财经新闻、宏观经济数据、股市行情、外汇汇率等信息。
  2. 投资理财工具:财经 app 可以提供投资理财工具,如股票查询、基金查询、理财产品查询等,帮助用户进行投资决策。
  3. 金融市场数据:财经 app 可以提供全球各大金融市场的实时数据,如股票、债券、期货、外汇等市场数据。
  4. 行情分析:财经 app 可以提供行情分析功能,如技术分析、基本面分析等,帮助用户了解市场趋势。
  5. 投资社区:财经 app 可以提供投资社区功能,让用户分享投资心得、交流投资策略,建立投资联系。
  6. 个性化推荐:财经 app 可以基于用户的投资偏好和行为,为用户推荐合适的投资理财产品。
  7. 财务管理:财经 app 可以提供财务管理功能,帮助用户管理个人投资账户,如资产配置、收益计算等。

财经 app 开发需要考虑以下几个方面:

  1. 用户体验:app 界面设计要简洁明了,易于操作。
  2. 系统稳定性:确保 app 在各种设备和网络环境下都能正常运行。
  3. 安全性:保护用户隐私和信息安全,防范网络攻击。
  4. 数据来源:确保 app 数据的准确性和实时性,与权威数据源合作。
  5. 互动功能:提供丰富的互动功能,提高用户活跃度。
  6. 兼容性:确保 app 兼容各种手机操作系统和设备。
  7. 合作伙伴:与各类金融机构、投资顾问合作,扩大 app 的影响力和覆盖范围。
  8. 数据分析:通过数据分析了解用户行为,优化 app 功能和运营策略。

财经 app 开发可以满足用户对财经资讯和投资理财的需求,提高用户在财经领域的素养和投资水平。在开发过程中,要注重用户体验、系统稳定性、安全性和合作伙伴的选择,以实现良好的投资体验和高效的运营管理。

股票类app怎么开发?AI工程案例开发自主股票交易系统

以上就是股票类app怎么开发?AI工程案例开发自主股票交易系统的详细内容,希望通过阅读小编的文章之后能够有所收获!

版权:本文由用户自行上传,观点仅代表作者本人,本站仅供存储服务。如有侵权,请联系管理员删除,了解详情>>

发布
问题