我有一个 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)
如何创建自定义滚动窗口函数?
我想请你帮忙解决一个看起来很奇怪的问题.也就是说,我试图在金融时间序列中(以及它发生时)找到负回报的最长连续子序列,但我可以设法只编程具有相同符号的返回的最长连续子序列.我正在处理以下类型的财务数据:
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) 希望获得一系列每日回报的连续累积回报?我知道这可以使用 exp 和 sum 解决,但我的回报系列不是使用 LN 计算的。
希望在不使用循环的情况下解决这个问题,因为它们在 sql 中效率很低。使其快速运行很重要。
数据集:
想要的结果
我正在使用熊猫来提取股票数据.例如,下面的代码,基本上从网络上发现的示例中提取,工作正常.
我想要做的是分析给定交易所上市的每一只股票的价格数据.例如,在下面的代码中,理想情况下,名为"股票"的列表将填充纽约证券交易所每个股票代码的股票代码.我找到了可以拉出标准普尔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) 类似于使用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)
我正在尝试构建一个汽车金融计算器,我想通过显示每个月的本金付款和每个月的利息来改进代码,我有以下代码
$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 美元 …
假设我们有一系列数字。它包含一些值[..., 3, 6, 4, 7]
。我想获得最多 100 个最后一个元素。
我试过max(series[100])
,但看起来 series[100] 运算符返回丢弃最后 100 个元素的子系列。
我有 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 中获取股票数据进行一些分析。
我想对许多股票进行分析,不是像 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 的每个股票代码?
谢谢!
这是我的第一个问题,请原谅我的错误我一直在阅读 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) finance ×10
python ×5
pandas ×4
back-testing ×1
calculator ×1
charts ×1
d3.js ×1
formula ×1
javascript ×1
php ×1
pine-script ×1
r ×1
return ×1
sql ×1
stock ×1
stockquotes ×1
stocks ×1
time-series ×1
zipline ×1