谈到一些quants/hedgies,我得出的结论是,他们中的很多人似乎都在使用自制语言或OCaml执行许多任务.许多人无法回答的原因是.
我当然可以理解他们为什么不想在大多数情况下使用C++,但为什么OCaml与其他脚本语言(如Python,Ruby等)相比更适合这些用途?
我对FIX-Protocol比较新.
FIX协议消息的分隔符有时会显示^和其他时间.维基百科的FIX协议说[SOH]
(< 十六进制的开头 >十六进制为0x01)是该字符.
请解释一下这个含义.
例如,FIX协议消息可以在视觉上表示为
8=FIX.4.4^9=122^35=D^34=215^49=CLIENT12^52=20100225-19:41:57.316^56=B^1=Marcel^11=13346^21=1^40=2^44=5^54=1^59=0^60=20100225-19:39:52.020^10=072^
Run Code Online (Sandbox Code Playgroud)
要么
8=FIX.4.4|9=122|35=D|34=215|49=CLIENT12|52=20100225-19:41:57.316|56=B|1=Marcel|11=13346|21=1|40=2|44=5|54=1|59=0|60=20100225-19:39:52.020|10=072|
Run Code Online (Sandbox Code Playgroud)
那么使用^ over |的确切区别是什么?
是否还使用了其他分隔符.不清楚为什么[SOH]
(0x01)适合^或|
它可能是数字之一.
最大亏损是量化融资中常用的风险指标,用于评估经历的最大负回报.
最近,我对使用循环方法计算最大缩幅的时间变得不耐烦了.
def max_dd_loop(returns):
"""returns is assumed to be a pandas series"""
max_so_far = None
start, end = None, None
r = returns.add(1).cumprod()
for r_start in r.index:
for r_end in r.index:
if r_start < r_end:
current = r.ix[r_end] / r.ix[r_start] - 1
if (max_so_far is None) or (current < max_so_far):
max_so_far = current
start, end = r_start, r_end
return max_so_far, start, end
Run Code Online (Sandbox Code Playgroud)
我很熟悉矢量化解决方案会更好的普遍看法.
问题是:
我将Alexander的答案修改为以下函数:
def max_dd(returns):
"""Assumes returns is a pandas Series"""
r = …
Run Code Online (Sandbox Code Playgroud) I want to process stock level-2 data in pandas. Suppose there are four kinds data in each row for simplicity:
Which can be easily defined as a structured dtype in numpy:
dtype = np.dtype([
('millis', 'int64'),
('last_price', 'float64'),
('ask_queue', ('int32', 200)),
('bid_queue', ('int32', 200))
]) …
Run Code Online (Sandbox Code Playgroud) 我想学习如何使用这些软件包,但我似乎找不到任何提供除了大量代码片段之外的其他内容的小插图.我想了解它们如何融合在一起,以及类似于"走过去"的东西.
我在网上找到了一些像这个系列的例子:http://timelyportfolio.blogspot.com/2011/06/quantstrat-to-build-on.html但是我正在深入了解一些事情(比如"PerformanceAnalytics"包中的晕影/示例
任何来源?
我最近问了一个关于计算最大缩幅的问题,其中Alexander给出了一种非常简洁有效的方法来计算大熊猫中的DataFrame方法.
我想通过询问其他人如何计算最大有效缩编来跟进?
这是我根据Alexander对上述问题的回答实现的最大缩编:
def max_drawdown_absolute(returns):
r = returns.add(1).cumprod()
dd = r.div(r.cummax()).sub(1)
mdd = dd.min()
end = dd.argmin()
start = r.loc[:end].argmax()
return mdd, start, end
Run Code Online (Sandbox Code Playgroud)
它需要一个返回序列并返回max_drawdown以及下降发生的指数.
我们首先生成一系列累积回报,作为回报指数.
r = returns.add(1).cumprod()
Run Code Online (Sandbox Code Playgroud)
在每个时间点,通过将回报指数的当前水平与之前所有时期的最大回报指数进行比较来计算当前的亏损.
dd = r.div(r.cummax()).sub(1)
Run Code Online (Sandbox Code Playgroud)
然后,最大亏损是所有计算下降的最小值.
我的问题:
我想通过询问其他人如何计算最大 有效缩编来跟进?
假设解决方案将扩展到上面的解决方案.
我正在编写一些机器学习软件用于公平,并希望找到一些刻度数据或至少3或5分钟的数据.
我想有一到两年的时间进行测试.
我并不真正关心数据的交换,只要它来自某个主要交易所.
还有哪里可以连接到延迟'实时'数据的数据流?
数据不一定是免费的,但免费更好:-)
Python中有类似于quantstrat的东西吗?
许多量子计和附带的例子似乎是通过交叉某种技术指标来围绕进入和退出交易.
但是,假设你有一个任意指标,你用它来触发交易进入,但是你想在第二天开盘或收盘时解除交易.你最好如何实现这个例子?
我们来看下面的例子:
例如,使用blotter
这样的东西写相对容易:
假设ratio
用列调用xts对象:
我们的代码将是:
for( i in 1:nrow(ratio) ) {
## Define the dates:
CurrentDate <- index(ratio[i,])
NextDate <- index(ratio[i+1,])
## Define the prices:
XYZClosePrice <- as.numeric(ratio$XYZ.Close[i,])
ABCClosePrice <- as.numeric(ratio$ABC.Close[i,])
XYZOpenPrice <- as.numeric(ratio$XYZ.Open[i+1,])
ABCOpenPrice <- as.numeric(ratio$ABC.Open[i+1,])
CCYClosePrice <- as.numeric(ratio$CCY.Close[i,])
CCYOpenPrice <- as.numeric(ratio$CCY.Open[i+1,])
## Define the spread:
SpreadOp <- ABCOpenPrice/XYZOpenPrice
SpreadCl <- ABCClosePrice/XYZClosePrice
## Define the …
Run Code Online (Sandbox Code Playgroud) 我正在使用pyalgotrade
交易策略,我想在列表中使用多个代码.
它现在的设置方式,它为列表中的每个单独的股票代码运行策略,但我希望它做的是将它们全部作为一个复合策略运行.
我该怎么做呢?
这是代码:
from pyalgotrade.tools import yahoofinance
from pyalgotrade import strategy
from pyalgotrade.barfeed import yahoofeed
from pyalgotrade.technical import stoch
from pyalgotrade import dataseries
from pyalgotrade.technical import ma
from pyalgotrade import technical
from pyalgotrade.technical import highlow
from pyalgotrade import talibext
from pyalgotrade.talibext import indicator
import numpy as np
import talib
testlist = ['aapl', 'msft', 'z']
class MyStrategy( strategy.BacktestingStrategy ):
def __init__( self, feed, instrument ):
strategy.BacktestingStrategy.__init__( self, feed )
self.__position = []
self.__instrument = instrument
self.setUseAdjustedValues( True ) …
Run Code Online (Sandbox Code Playgroud) python quantitative-finance yahoo-finance pyalgotrade ta-lib
python ×5
numpy ×3
pandas ×3
quantstrat ×3
r ×3
finance ×1
financial ×1
fix-protocol ×1
ocaml ×1
pyalgotrade ×1
quantmod ×1
ta-lib ×1
trading ×1
xts ×1