标签: finance

如何有效地计算移动标准差

下面你可以看到我的C#方法来计算每个点的布林带(移动平均线,上行带,下行带).

如您所见,此方法使用2 for循环来计算移动平均值的移动标准偏差.它曾经包含一个额外的循环来计算过去n个时期的移动平均值.我可以通过在循环开始时将新的点值添加到total_average并删除循环结束时的i-n点值来删除.

我现在的问题基本上是:我可以用移动平均线管理的类似方式删除剩余的内部循环吗?

    public static void AddBollingerBands(SortedList<DateTime, Dictionary<string, double>> data, int period, int factor)
    {
        double total_average = 0;

        for (int i = 0; i < data.Count(); i++)
        {
            total_average += data.Values[i]["close"];

            if (i >= period - 1)
            {
                double total_bollinger = 0;
                double average = total_average / period;

                for (int x = i; x > (i - period); x--)
                {
                    total_bollinger += Math.Pow(data.Values[x]["close"] - average, 2);
                }

                double stdev = Math.Sqrt(total_bollinger / period);

                data.Values[i]["bollinger_average"] = average;
                data.Values[i]["bollinger_top"] = …
Run Code Online (Sandbox Code Playgroud)

c# algorithm finance moving-average standard-deviation

20
推荐指数
2
解决办法
2万
查看次数

使用财务数据计算数据框的回报

我有一个包含月度财务数据的数据框:

In [89]: vfiax_monthly.head()
Out[89]: 
            year  month  day       d   open  close   high    low  volume  aclose
2003-01-31  2003      1   31  731246  64.95  64.95  64.95  64.95       0   64.95
2003-02-28  2003      2   28  731274  63.98  63.98  63.98  63.98       0   63.98
2003-03-31  2003      3   31  731305  64.59  64.59  64.59  64.59       0   64.59
2003-04-30  2003      4   30  731335  69.93  69.93  69.93  69.93       0   69.93
2003-05-30  2003      5   30  731365  73.61  73.61  73.61  73.61       0   73.61
Run Code Online (Sandbox Code Playgroud)

我正试图计算这样的回报:

In [90]: returns = (vfiax_monthly.open[1:] - vfiax_monthly.open[:-1])/vfiax_monthly.open[1:]
Run Code Online (Sandbox Code Playgroud)

但我只得到了零:

In …
Run Code Online (Sandbox Code Playgroud)

finance pandas

19
推荐指数
3
解决办法
4万
查看次数

使用人工智能(AI)来预测股票价格

给出一组非常类似于Motley Fool CAPS系统的数据,其中个人用户输入各种股票的买入和卖出建议.我想这样做是显示每个建议,我想一些如何率(1-5)是否是很好的预测<5>(即相关系数= 1)未来股价(或EPS或其他)的或者是一个可怕的预测者(即相关系数= -1)或介于两者之间的某个地方.

每个推荐都标记给特定用户,以便可以随时跟踪.我还可以根据sp500价格等因素跟踪市场方向(看涨/看跌).我认为在模型中有意义的组件将是:

user
direction (long/short)
market direction
sector of stock
Run Code Online (Sandbox Code Playgroud)

我们的想法是,一些用户在牛市中比熊市更好(反之亦然),有些用户在空头方面比在多头方面更好 - 然后是上述组合.我可以自动标记市场方向和行业(基于当时的市场和推荐的股权).

我的想法是,我可以提供一系列屏幕,并允许我通过显示特定时间段内的可用数据绝对值,市场和扇区输出性能来对每个单独的推荐进行排名.我会按照详细的清单对股票进行排名,以便排名尽可能客观.我的假设是单个用户的权利不超过57% - 但谁知道.

我可以加载系统并说"让我们将推荐排名为90天前的股票价值预测"; 这将代表一组非常明确的排名.

现在这里是关键 - 我想创建某种机器学习算法,可以在一系列时间内识别模式,以便当推荐流入应用程序时,我们保持该库存的排名(即类似于相关系数).该建议的可能性(除了过去的一系列建议)将影响价格.

现在这里是超级难题.我从未参加过AI课程/阅读AI书籍/从不介意机器学习.所以我想寻找指导 - 我可以适应的类似系统的样本或描述.寻找信息或任何一般帮助的地方.或者甚至推动我朝着正确的方向开始......

我的希望是与F#来实现这一点,并能够给我的朋友有一个新的技能在F#设置与机器学习的实现和潜在的东西(应用程序/源)我可以包括在高科技投资组合或博客空间留下深刻的印象;

提前感谢您的任何建议.

f# finance artificial-intelligence classification machine-learning

18
推荐指数
3
解决办法
1万
查看次数

任何备受瞩目的开源金融项目?

金融行业有一个备受瞩目的开源项目- 特别是投资银行领域 - 我可以做出贡献(理想情况下是.NET)吗?我想在这个领域加强我的简历.

我更喜欢算法交易领域的某些东西,但我对任何路线都是开放的(例如前台办公应用程序等).

c# open-source finance

16
推荐指数
2
解决办法
7799
查看次数

GPGPU上的财务应用程序

我想知道使用GPGPU可以实现哪种财务应用程序.我知道使用CUDA在GPGPU上使用蒙特卡罗模拟进行期权定价/股票价格估算.有人可以枚举将GPGPU用于财务领域的任何应用程序的各种可能性,

finance cuda gpgpu

16
推荐指数
1
解决办法
4944
查看次数

美国快递API

是否有API可以让我访问我的AMEX交易?Mint或任何其他财务网站如何导出我的数据?如果是这样,它是免费的吗?

api finance web-services credit-card

16
推荐指数
2
解决办法
1万
查看次数

这些人如何避免制造任何垃圾?

这是我在网上发现的一篇有趣的文章.

它讨论了该公司如何能够在托管环境中解析大量财务数据,主要是通过对象重用和避免不可变因素(如字符串).然后他们继续说明他们的程序在连续操作阶段没有做任何GC.

这是非常令人印象深刻的,我想知道这里是否有其他人有关于如何做到这一点的更详细的指导.首先,我想知道如何避免使用字符串,当消息中的某些数据是字符串时,无论客户端应用程序正在查看消息,都希望传递这些字符串?另外,你在启动阶段分配了什么?你怎么知道它够了?声明一大块内存并保留对它的引用以便GC不会启动是否很简单?客户端应用程序使用这些消息怎么样?是否还需要按照这些严格的标准编写?

另外,我需要一个特殊工具来查看内存吗?到目前为止,我一直在使用SciTech内存分析器.

c# garbage-collection finance

16
推荐指数
2
解决办法
894
查看次数

QuantLib OpenOffice/Excel YIELD/PRICE功能

有人可以提供一个如何使用QuantLib复制Excel/OpenOffice YIELDPRICE函数的示例吗?

我有一些例子,但我还不太清楚所有的设置.当我尝试更改某些值时,我会得到零或一些荒谬的值.理想情况下,我想创建与YIELD/PRICE函数等效的c ++.

在我的第一步中,我不需要在Excel日期建模中复制缺陷.我可以等到以后才能生成完全相同的副本.虽然如果你知道这也很棒.


PRICE 例如,在OpenOffice中:

PRICE("2008-02-15","2010-11-15",5%,7%,100,2,1) = 95.068419616675
Run Code Online (Sandbox Code Playgroud)

我的QuantLib代码能够获得95.066759有点偏差.至少我有基本的价格函数,我想现在得到一个完全匹配的结果.


我不能轻易包含所有包装代码,但基本代码如下.

#include <ql/time/calendar.hpp>
#include <ql/time/daycounters/actualactual.hpp>
#include <ql/time/daycounters/actual365fixed.hpp>
#include <ql/time/schedule.hpp>
#include <ql/time/calendars/unitedstates.hpp>
#include <ql/time/calendars/nullcalendar.hpp>

#include <ql/settings.hpp>
#include <ql/handle.hpp>
#include <ql/termstructures/yield/flatforward.hpp>
#include <ql/instruments/bonds/fixedratebond.hpp>

#include <ql/pricingengines/bond/discountingbondengine.hpp>
#include <ql/utilities/dataformatters.hpp>

#include <iostream>
#include <iomanip>

#include "boost/date_time/gregorian/gregorian.hpp"
using namespace QuantLib;

Date convert_date( boost::gregorian::date const & date )
{
    unsigned mon = date.month();
    return Date( date.day(), Month(mon), date.year() );
}

shared_ptr<Bond> create_bond( boost::gregorian::date const & settlement_, boost::gregorian::date const & …
Run Code Online (Sandbox Code Playgroud)

c++ finance quantlib

16
推荐指数
1
解决办法
2309
查看次数

如何处理与熊猫数据框关联的元数据?

Q1:将元信息保存到数据帧的最佳实践是什么?我知道以下编码实践

import pandas as pd
df = pd.DataFrame([])
df.currency = 'USD'
df.measure = 'Price'
df.frequency = 'daily'
Run Code Online (Sandbox Code Playgroud)

但正如这篇文章将元信息/元数据添加到 Pandas DataFrame 中所述,这与通过应用诸如“groupby、pivot、join 或 loc”等函数而丢失信息的风险相关联,因为它们可能会返回“一个没有元数据的新 DataFrame随附的”。

这仍然有效还是在此期间对元信息处理进行了更新?为此目的对熊猫进行子类化是一种很好的编码习惯吗?

Q2:什么是替代编码实践?

我不认为构建一个单独的对象是非常合适的。使用 Multiindex 也不能说服我。假设我想将带有价格的数据框除以带有收益的数据框。使用 Multiindices 将非常复杂。

#define price DataFrame
p_index = pd.MultiIndex.from_tuples([['Apple', 'price', 'daily'],['MSFT', 'price', 'daily']])
price = pd.DataFrame([[90, 20], [85, 30], [70, 25]], columns=p_index)

# define earnings dataframe
e_index = pd.MultiIndex.from_tuples(
    [['Apple', 'earnings', 'daily'], ['MSFT', 'earnings', 'daily']])
earnings=pd.DataFrame([[5000, 2000], [5800, 2200], [5100, 3000]], 
                columns=e_index)

price.divide(earnings.values, level=1, axis=0)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我什至不确保公司指数真的匹配。我可能需要调用 pd.DataFrame.reindex() 或类似的。在我看来,这不是一个好的编码实践。 …

python finance metadata divide pandas

15
推荐指数
1
解决办法
1751
查看次数

递归:具有分布的帐户值

更新:不确定在没有某种形式的循环的情况下是否可行,但np.where在此处不起作用.如果答案是"你不能",那就这样吧.如果可以,它可以使用来自的东西scipy.signal.


我想在下面的代码中对循环进行矢量化,但由于输出的递归性质,不确定如何.

走我当前的设置:

获取起始金额(100万美元)和季度美元分配(5,000美元):

dist = 5000.
v0 = float(1e6)
Run Code Online (Sandbox Code Playgroud)

在每月频率生成一些随机安全/帐户返回(十进制形式):

r = pd.Series(np.random.rand(12) * .01,
              index=pd.date_range('2017', freq='M', periods=12))
Run Code Online (Sandbox Code Playgroud)

创建一个包含月度帐户值的空系列:

value = pd.Series(np.empty_like(r), index=r.index)
Run Code Online (Sandbox Code Playgroud)

添加"开始月份" value.这个标签将包含v0.

from pandas.tseries import offsets
value = (value.append(Series(v0, index=[value.index[0] - offsets.MonthEnd(1)]))
              .sort_index())
Run Code Online (Sandbox Code Playgroud)

我想摆脱的循环在这里:

for date in value.index[1:]:
    if date.is_quarter_end:
        value.loc[date] = value.loc[date - offsets.MonthEnd(1)] \
                        * (1 + r.loc[date]) - dist
    else:
        value.loc[date] = value.loc[date - offsets.MonthEnd(1)] \
                        * (1 + r.loc[date]) 
Run Code Online (Sandbox Code Playgroud)

合并代码:

import pandas …
Run Code Online (Sandbox Code Playgroud)

python recursion finance python-3.x pandas

15
推荐指数
2
解决办法
411
查看次数