新手程序员、金融数据应用与快速原型开发的价值





2.00/5 (1投票)
我如何使用 Exaptive Studio 构建了一个用于查看航空公司股票的最小可行数据应用程序。
我喜欢创造。我喜欢分析。我喜欢编程。有趣的是,在开始构建分析某个事物的应用程序之前,你通常需要颠倒这个顺序。你需要编程知识才能将分析转化为“事物”。问题是,虽然我喜欢编程,但我仍然是新手。我的意思是,我算是 Codecademy 的水平,但这并不能直接转化为使用 Python、Javascript 和 D3 的面向用户的应用程序。所以,当我最近坐下来构建一个用于查看航空公司股票的最小可行数据应用程序时,我想知道需要多长时间才能达到可用状态,坦率地说,我担心它可能多么简陋。
但是,一个小时后我就做到了。它并不漂亮,也不是有价值见解意义上的可用。然而,它是说明性的。它使得提出“这种布局是否合理?”、“这是我真正想要的数据吗?”之类的问题变得容易。我可以向客户或我的老板展示它,并问:“这是我们想要的方向吗?” 我可以快速获得反馈。这很有价值。
我怎么能在不到一个小时内构建出东西来?我尽可能地利用了已有的东西,从而让我编写的代码最少,最好是零。如果你还记得的话,这是我在这整个构建过程中的弱点。
我从一次快速的白板会议开始。我大致知道我需要什么。日期、股票价格、股票信息、可视化等。我搜索了我可能需要的组件,有些我知道存在,有些我不知道。一个令人惊喜的例子是,当我搜索“日期”时,我需要一种方法来输入日期范围,我找到了一个“DatePicker”组件。这正是我所需要的,并且本来需要我花一整天来构建。
在 Exaptive Studio 中构建的由此产生的模型看起来是这样的
这只花了很短的时间,但有效地阐明了我拥有的(组件)、我需要的(指示所需组件的注释)以及我的仪表板的初始框架。在这种情况下,它帮助我看到问题几乎已经解决,并且我是一个足够有能力的程序员来填补空白。如果存在我无法填补的空白,我可以很容易地通过共享白板来引入一位更有经验的程序员。但是,在这种情况下,我能够处理。
为了填补空白,我需要获取金融数据的组件。快速的谷歌搜索表明 Yahoo Finance API 是一个简单易用的解决方案。我找到的一个 Python 库将“简单易用”变成了获取所需信息的 3 行代码,而获取信息并对其进行迭代则不到 50 行代码,为我的初始可视化(给定日期范围和股票代码的价格)创建了一个“duffle”数据。如果你想知道 duffle 是什么,它是一个 Exaptive 特有的数据模型, built to be powerfully simple。如果你感兴趣,可以在这里了解更多。回到 Yahoo Finance,对于返回更精细数据的组件(给定股票代码的市场资本化、EBITDA、EPS 等),故事也类似。不到 110 行的直观代码,我就得到了我需要的东西。
获取历史数据
获取精细数据
剩下要做的就是将它们连接起来并配置可视化。
我添加了一个进度条组件,因为 API 调用在较大的日期范围内有点慢,并在折线图上添加了一个工具提示,以便更好地查看鼠标悬停的股票。其余的时间都在配置组件。(哦,还有修改 CSS 以获得使用 Stack Overflow 复制粘贴获得的布局。)
输入四个航空公司的股票代码、一个日期范围,然后…… voilà!两条折线图、一个箱线图和一个表格。在上方的图中,橙色线是联合航空(Ual),蓝色是美国航空(Aal),红色是达美航空(Dal),绿色是西南航空(Luv)。
下面,我悬停在达美航空的线上。(注意我悬停位置的小工具提示,上面显示了股票代码)。表格显示了达美航空的数据,下面更新的折线图只显示了达美航空在给定时间段内的股价。
我也可以悬停在箱线图上以获得更多详细信息。
由于这是一个原型,是过程的第一步,我在仪表板正下方包含了一个可排序、可滚动的表格,其中包含所有数据。在后续迭代中我可能不会包含它,但在早期阶段,我可以使用它来对数据返回进行故障排除。
我的目标是创建一个 MVP 仪表板,我认为我实现了。我会根据它提供的一些见解购买美国航空公司的股票吗?今天不会。我是否对有价值的数据应用程序有了更好的了解?绝对。那么我学到了什么?
我需要一个更好的数据源,提供更精细的数据,包括能够洞察这些公司各自的状态、它们之间的关系以及整个航空业的指标。我可以构建组件来处理我拥有的数据,使其更有用,但为什么要重复造轮子呢?事实上,我展示给的第一个人说:“金融人士使用 Quandl API,数据好得多。”#快速反馈 好处是?由于模块化精神,我可以拔掉 Yahoo Finance 组件,换上 Quandl API 组件,而不会丢失当前功能的任何一项。
我了解到我不是 CSS 大师(注意不太完美的布局),但我们有专人负责,所以为什么要花太多时间去担心它呢?我的目标不是漂亮。我的目标是一个指向改进应用程序下一步方向的指南针。
最后,我了解到,尽管过去一年燃油价格持续下跌,但航空公司的股票表现并未跑赢大盘。事实上,总的来说,你可以将它们描述为表现不佳,并带有一点波动性。这是否意味着燃油价格不影响其盈利能力,进而影响其价值?不可能。这是否意味着这些股票目前被低估了?可能,下一版本的仪表板可能会帮助决定。
我为什么能在不到一个小时内做到这一点?因为其他人通过构建组件解决了他们的问题,而这些组件恰好是我问题解决方案的重要组成部分。(这真是太神奇了,这种情况发生得如此频繁,例如这里和这里)。
但值得欣慰的是,没有人需要为获取股票价格构建组件了。我已经完成了这项工作(总共 45 行代码),现在任何使用相同数据集解决问题的人都可以使用它。我尽可能地利用了系统。我尽我所能做出了贡献。结果是一个在 45 分钟内完成的原型数据应用程序。