标签: finance

在 python 中滚动 idxmax() ?

我有一个 python DataFrame,其中包含一些财务数据,我正在尝试为其创建一些技术指标。我试图弄清楚如何使用移动窗口函数来加速该过程,而不是逐个元素地进行。对于每个索引,我想返回过去 30 天的最大索引。我已经实现了一个逐个元素的解决方案,但正如你可以想象的那样,它非常慢。

    for s_sym in ls_symbols:
        for i in range(refresh, len(ldt_timestamps)):
            #Aroon-Up = ((period - Days Since High)/period) x 100 Aroon-Down = ((period - Days Since Low)/peiod) x 100'''
            whrmax = df_close[s_sym].ix[ldt_timestamps[i-uplen:i]].idxmax()
            maxaway = (df_close[s_sym].ix[whrmax : ldt_timestamps[i-1]]).count()
            aroonup = ((uplen - maxaway) / uplen ) * 100

            whrmin = df_close[s_sym].ix[ldt_timestamps[i-dnlen:i]].idxmin()
            minaway = df_close[s_sym].ix[whrmin : ldt_timestamps[i-1]].count()
            aroondn = ((dnlen - minaway) / dnlen ) * 100
Run Code Online (Sandbox Code Playgroud)

如何创建自定义滚动窗口函数?

python finance time-series algorithmic-trading pandas

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

金融系列连续下跌最多

我想请你帮忙解决一个看起来很奇怪的问题.也就是说,我试图在金融时间序列中(以及它发生时)找到负回报的最长连续子序列,但我可以设法只编程具有相同符号的返回的最长连续子序列.我正在处理以下类型的财务数据:

               LgReturn
1991-08-13  0.005180647
1991-08-14  0.008555806
1991-08-15  0.004878436
1991-08-16 -0.004723199
Run Code Online (Sandbox Code Playgroud)

我的方法如下:首先使用符号获得仅1s的序列(正返回和-1s(负返回)并使用rle获取所有长度的外观列表

z <- sign(NASDAQLgRetOpen[,1])
rle(z)
Run Code Online (Sandbox Code Playgroud)

命令rle(z)产生以下输出:

Run Length Encoding
lengths: int [1:2731] 3 3 2 1 4 6 1 1 2 3 ...
values : num [1:2731] 1 -1 1 -1 1 -1 1 -1 1 -
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码找到最长的子序列:

pad <- rev(sort(rle(z)$lengths[rle(z)$values[rle(z)$lengths]==-1]))
Run Code Online (Sandbox Code Playgroud)

和以下代码提取它在我的时间序列中出现的位置

vsota <- sum(rle(z)$lengths[1:(which(unlist(rle(z)$lengths)==pad[1]))])
Run Code Online (Sandbox Code Playgroud)

这给了我时间序列中的行,所以我使用了

serija <- NASDAQLgRetOpen[(vsota+1-pad[1]):vsota,1]

plot(cumprod(1+serija), type="l")
Run Code Online (Sandbox Code Playgroud)

问题是我得到了一个情节,清楚地显示了一个增加的序列,所以我找到了最长的正序子.真正奇怪的是,无论我在行中选择1还是-1,我都得到正的子序列

 pad <- rev(sort(rle(z)$lengths[rle(z)$values[rle(z)$lengths]==-1]))
Run Code Online (Sandbox Code Playgroud)

我错过了什么?伙计们,帮助我,因为这真的令人困惑.提前感谢您的建议.

...找到一个简单的方法来解决这个问题:反转符号并应用log,使得负回报变为0并且pozitive返回变为NaN - 然后rle总是返回最长的负设置序列,因为Nan被解释为长度为1.以下代码作品; 假设您要分析的数据位于数据表的第i列:

fall <- function(data,i){
sg <- log(-sign(data[,i]))
zacetek <-  sum(rle(sg)$lengths[1:(which(rle(sg)$lengths==max(rle(sg)$lengths))-1)[1]])
podatki …
Run Code Online (Sandbox Code Playgroud)

finance r

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

在sql中运行累积回报

希望获得一系列每日回报的连续累积回报?我知道这可以使用 exp 和 sum 解决,但我的回报系列不是使用 LN 计算的。

希望在不使用循环的情况下解决这个问题,因为它们在 sql 中效率很低。使其快速运行很重要。

数据集:

在此处输入图片说明

想要的结果

在此处输入图片说明

sql finance return

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

如何为特定交易所的每只股票提取股票数据

我正在使用熊猫来提取股票数据.例如,下面的代码,基本上从网络上发现的示例中提取,工作正常.

我想要做的是分析给定交易所上市的每一只股票的价格数据.例如,在下面的代码中,理想情况下,名为"股票"的列表将填充纽约证券交易所每个股票代码的股票代码.我找到了可以拉出标准普尔500指数所有成分的股票代号的地方,但没有地方我可以为特定交易所的每只股票提取代码.我认为必须存在于某个地方 - 希望在一个熊猫已经很好玩的地方.非常感谢任何提示/建议.

import pandas.io.data as web
import datetime

start = datetime.datetime(2010,1,1)
end = datetime.datetime(2015,10,26)


stocks = ['F','IBM', 'WDC']
g=web.DataReader(stocks, 'yahoo', start, end)

h = g['Close']

# h contains the closing prices of every element of stocks
# for the time span from start to end 
Run Code Online (Sandbox Code Playgroud)

python finance stocks pandas

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

在JavaScript中将数据转换为OHLC(开放,高,低,关闭)?

类似于使用C#从日期,时间,价格创建OHLC数据,如何将基本贸易数据转换为OHLC(或开放,高,低,关闭)并将其应用于此独特案例?

var data = [{
    "tid": 283945,
    "date": 1384934366,
    "amount": "0.08180000",
    "price": "501.30"
}, {
    "tid": 283947,
    "date": 1384934066,
    "amount": "0.06110000",
    "price": "490.66"
},
...
];

function convertToOHLC(data) {
    // What goes here?
}
convertToOHLC(data);
Run Code Online (Sandbox Code Playgroud)

这是小提琴:https://jsfiddle.net/5dfjhnLw/

javascript charts finance quantitative-finance d3.js

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

车辆财务计算php

我正在尝试构建一个汽车金融计算器,我想通过显示每个月的本金付款和每个月的利息来改进代码,我有以下代码

$interest = 10 /100/12;//10 is the interest rate
$months = 60; //60 months term
$loan = 12000;// total loan amount

$monthly_payment = $loan * $interest / (1-(pow((1+$interest),-$months)));
$total_payable = $monthly_payment * $months;
$total_interest = ($total_payable - $loan);

echo "Monthly Payment = " . $monthly_payment. '<br>';
echo "Total Payable = " . $total_payable . '<br>';
echo "Total Interest = " . $total_interest . '<br>';
echo "Monthly Interest = " . ($total_interest / $months) . '<br>';
Run Code Online (Sandbox Code Playgroud)

做我想做的事,我需要使用此页面上的公式 http://www.ifsautoloans.com/car-loan-interest/

这是公式

100 美元 …

php finance calculator formula

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

如何在 Pine 脚本中获取最大子系列

假设我们有一系列数字。它包含一些值[..., 3, 6, 4, 7]。我想获得最多 100 个最后一个元素。

我试过max(series[100]),但看起来 series[100] 运算符返回丢弃最后 100 个元素的子系列。

finance pine-script

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

如何在 Python 中使用 Returns 计算 MaximumDrawdown

我有 DataFramefinal与我的投资组合的回报。我正在尝试使用回报来计算 MaxDrawdown。我已经尝试了下面的代码,确实看到了很多 stackexchange 问题。但无法解决这个问题。有没有办法使用投资组合的回报来计算最大回撤。

              Returns
1/2/2009     0.030483579
1/5/2009     0.002872092
1/6/2009     0.01461333
1/7/2009    -0.032431836
1/8/2009     0.0055774
1/9/2009    -0.019844336
1/12/2009   -0.019705618
1/13/2009    0.001093185
1/14/2009   -0.032726765
1/15/2009    0.013635182
1/16/2009    0.009807648
1/20/2009   -0.044440252
1/21/2009    0.035156229
1/22/2009   -0.01460641
1/23/2009    0.007399468
1/26/2009    0.007910521
1/27/2009    0.007848472
1/28/2009    0.028944903
1/29/2009   -0.023816962
1/30/2009   -0.02550717
2/2/2009    -0.000292223
2/3/2009     0.020191091
2/4/2009    -7.93651E-06
2/5/2009     0.020070065
2/6/2009     0.026235957
2/9/2009    -0.001606124
2/10/2009   -0.03629415
2/11/2009    0.00248416
2/12/2009    0.001925152
2/13/2009   -0.00441840
Run Code Online (Sandbox Code Playgroud)

代码:

cum_returns = (1 + final).cumprod()
drawdown =  1 - final.div(final.cummax())
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决这个问题。谢谢!

python finance quantitative-finance pandas

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

Python:如何免费获取股票数据(适用于许多股票代码,例如 S&amp;P 500)

我想在 Python 中获取股票数据进行一些分析。

我想对许多股票进行分析,不是像 AAPL 这样的单一股票,而是像标准普尔 500 指数。具体来说,美国股票的收盘价和其他信息,如调整后的价格、行业等。

我该怎么做?


如果这个问题有点太简单,我很抱歉。我试图找到数据,但没有一个好的解决方案。

我试过quandl,但似乎只支持通过股票行情获取数据,也是如此Yahoo finance(来自https://www.quora.com/Using-Python-whats-the-best-way-to-get-stock-data)。一种可能的来源是Quantopian,但它仅支持在其在线笔记本中进行分析。现在我正在尝试Alph Advantage

当我看到其他人的项目时,它只是一个csv。我是否错过了 quandl 或 Yahoo Finance 中的某些内容?或者我是否需要从他们那里手动获取 SP 500 的每个股票代码?

谢谢!

在此处输入图片说明

python finance stockquotes stock yahoo-finance

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

Python ZIPLINE:_RunAlgoError: 没有提供 ``benchmark_spec``,并且 ``zipline.api.set_benchmark`` 在 ``initialize`` 中没有被调用

这是我的第一个问题,请原谅我的错误我一直在阅读 Andreas Clenow 的 Trading Evolved,这是一本关于使用 Python 进行回测和财务的书 这是我收到的代码和错误

%matplotlib inline

# Import Zipline functions that we need
from zipline import run_algorithm
from zipline.api import order_target_percent, symbol

# Import date and time zone libraries
from datetime import datetime
import pytz
import pandas as pd

# Import visualization
import matplotlib.pyplot as plt


def initialize(context):
    # Which stock to trade
    context.stock = symbol('AAPL')
    
    # Moving average window
    context.index_average_window = 100
    
def handle_data(context, data):
    # Request history for the stock
    equities_hist = data.history(context.stock, …
Run Code Online (Sandbox Code Playgroud)

python finance pandas zipline back-testing

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