我的viacsv.py文件中有以下代码,旨在允许自定义捆绑包被摄取:
#
# Ingest stock csv files to create a zipline data bundle
import os
import numpy as np
import pandas as pd
import datetime
boDebug=True # Set True to get trace messages
from zipline.utils.cli import maybe_show_progress
def viacsv(symbols,start=None,end=None):
# strict this in memory so that we can reiterate over it.
# (Because it could be a generator and they live only once)
tuSymbols = tuple(symbols)
if boDebug:
print "entering viacsv. tuSymbols=",tuSymbols
# Define our custom ingest function
def ingest(environ, …Run Code Online (Sandbox Code Playgroud) 任何人都可以帮我一个计算一系列股票交易的内部收益率的方法吗?
让我们说场景是:
$10,000 of stock #1 purchased 1/1 and sold 1/7 for $11,000 (+10%)
$20,000 of stock #2 purchased 1/1 and sold 1/20 for $21,000 (+5%)
$15,000 of stock #3 purchased on 1/5 and sold 1/18 for $14,000 (-6.7%)
Run Code Online (Sandbox Code Playgroud)
这应该是有用的:http://www.rubyquiz.com/quiz156.html
但我无法弄清楚如何调整任何解决方案,因为他们假设每次回报的时间段都是一致的时期(1年).
我正在研究/回测交易系统.
我有一个包含OHLC数据的Pandas数据框,并添加了几个计算列,用于识别我将用作启动头寸信号的价格模式.
我现在想添加一个能够跟踪当前净头寸的列.我已经尝试使用df.apply(),但是将数据帧本身作为参数而不是行对象传递,因为后者我似乎无法回顾之前的行以确定它们是否导致任何价格模式:
open_campaigns = []
Campaign = namedtuple('Campaign', 'open position stop')
def calc_position(df):
# sum of current positions + any new positions
if entered_long(df):
open_campaigns.add(
Campaign(
calc_long_open(df.High.shift(1)),
calc_position_size(df),
calc_long_isl(df)
)
)
return sum(campaign.position for campaign in open_campaigns)
def entered_long(df):
return buy_pattern(df) & (df.High > df.High.shift(1))
df["Position"] = df.apply(lambda row: calc_position(df), axis=1)
Run Code Online (Sandbox Code Playgroud)
但是,这会返回以下错误:
ValueError: ('The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()', u'occurred at index 1997-07-16 08:00:00')
Run Code Online (Sandbox Code Playgroud)
滚动窗口函数似乎很自然,但据我所知,它们只作用于单个时间序列或列,因此无法工作,因为我需要在多个时间点访问多列的值.
我该怎么做呢?
python algorithmic-trading quantitative-finance dataframe pandas
鉴于历史日收益率,我如何计算单个股票头寸的投资组合分配,基于21天内不会损失超过起始投资组合价值的10%?(95%的信心.)
基于例如的一些起始代码
import numpy as np
from scipy.stats import norm
returns = [-0.01, -0.02, -0.01, 0.04, 0.02, 0.01, -0.03]
mu = np.mean(returns)
std = np.std(returns)
valueAtRisk = norm.ppf(0.05, mu, sigma)
Run Code Online (Sandbox Code Playgroud)
但是,以上仅告诉我1天的风险.我的问题是另一个方向; 假设我不想在21天内损失超过10%,我可以根据回报的分配分配什么.
我更喜欢可以直接计算的答案,但蒙特卡罗的答案是可以接受的.
感谢您的帮助.
我知道使用熊猫这是你通常获得每日股票报价的方式.但我想知道是否有可能获得每月或每周报价,是否可能有一个参数我可以通过获得月度报价?
from pandas.io.data import DataReader
from datetime import datetime
ibm = DataReader('IBM', 'yahoo', datetime(2000,1,1), datetime(2012,1,1))
print(ibm['Adj Close'])
Run Code Online (Sandbox Code Playgroud) 我可以使用计算NPV
tvmnpv(i,cfo,cfall)=begin
n=collect(1:length(cfall));
cfo + sum(cfall./(1+i).^n)
end
Run Code Online (Sandbox Code Playgroud)
cfot = 0时的初始现金流量在哪里,cfall表示以下现金流量,i是使用的贴现率.
但是,鉴于现金流量,我无法找到计算内部收益率的方法.我相信excel使用一个滚动可能值的函数,直到找到cfo加上折扣后的现金流等于零的值.谁能指出我正确的方向?
期望输出的示例如下:
cfo=[-100];cfall=[30,30,30,30]
Out: 0.07713847
因此,内部收益率为7.713847%.
谢谢您的帮助.
类似于使用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)
我一直在尝试从网站导入一个html表并将其转换为熊猫DataFrame.这是我的代码:
import pandas as pd
table = pd.read_html("http://www.sharesansar.com/c/today-share-price.html")
dfs = pd.DataFrame(data = table)
print dfs
Run Code Online (Sandbox Code Playgroud)
它只显示这个:
0 S.No ...
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做;
for df in dfs:
print df
Run Code Online (Sandbox Code Playgroud)
它输出表..
我怎样才能使用pd.Dataframe刮表?
我有 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)
谁能帮我解决这个问题。谢谢!
我有一个 DataFrame,df每日股票收益如下:
Date Stock A Stock B Stock C
2018-12-26 -0.018207 0.083554 -0.006546
2018-12-27 0.004223 0.000698 0.003806
2018-12-28 0.024847 -0.008717 0.028399
2018-12-31 0.000000 0.010904 0.000000
2019-01-02 0.036554 0.002436 0.035557
2019-01-03 0.043541 -0.028462 0.006065
2019-01-04 -0.036207 0.070025 0.003025
2019-01-07 -0.005367 0.046411 -0.001546
2019-01-08 0.002878 0.014678 0.003631
2019-01-09 0.004663 0.014151 0.017179
2019-01-10 0.009282 0.026047 0.002062
2019-01-11 0.021224 -0.006649 -0.001578
2019-01-14 0.022168 -0.015211 0.008713
2019-01-15 -0.009827 0.020080 -0.004424
2019-01-16 0.021561 -0.016657 0.003583
2019-01-17 0.005025 0.011703 0.010149
2019-01-18 0.013333 0.012785 0.007824
2019-01-21 …Run Code Online (Sandbox Code Playgroud)