标签: quantitative-finance

为什么对冲基金和金融服务经常使用OCaml?

谈到一些quants/hedgies,我得出的结论是,他们中的很多人似乎都在使用自制语言或OCaml执行许多任务.许多人无法回答的原因是.

我当然可以理解他们为什么不想在大多数情况下使用C++,但为什么OCaml与其他脚本语言(如Python,Ruby等)相比更适合这些用途?

ocaml programming-languages quantitative-finance

23
推荐指数
5
解决办法
1万
查看次数

FIX消息分隔符

我对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)适合^或|

它可能是数字之一.

financial fix-protocol quantitative-finance

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

使用python中的矢量化解决方案计算最大下拉量

最大亏损是量化融资中常用的风险指标,用于评估经历的最大负回报.

最近,我对使用循环方法计算最大缩幅的时间变得不耐烦了.

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)

python numpy quantitative-finance pandas

13
推荐指数
1
解决办法
5111
查看次数

Is there any elegant way to define a dataframe with column of dtype array?

I want to process stock level-2 data in pandas. Suppose there are four kinds data in each row for simplicity:

  • millis: timestamp, int64
  • last_price: the last trade price, float64,
  • ask_queue: the volume of ask side, a fixed size (200) array of int32
  • bid_queue: the volume of bid side, a fixed size (200) array of int32

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)

python numpy trading quantitative-finance pandas

13
推荐指数
1
解决办法
447
查看次数

除了函数帮助文件和演示之外,是否有R包的一般手册,"quantstrat","blotter","FinancialInstrument"等?

我想学习如何使用这些软件包,但我似乎找不到任何提供除了大量代码片段之外的其他内容的小插图.我想了解它们如何融合在一起,以及类似于"走过去"的东西.

我在网上找到了一些像这个系列的例子:http://timelyportfolio.blogspot.com/2011/06/quantstrat-to-build-on.html但是我正在深入了解一些事情(比如"PerformanceAnalytics"包中的晕影/示例

任何来源?

r quantitative-finance quantstrat financialinstrument

12
推荐指数
1
解决办法
8979
查看次数

python中的最大活动下降

我最近问了一个关于计算最大缩幅的问题,其中Alexander给出了一种非常简洁有效的方法来计算大熊猫中的DataFrame方法.

我想通过询问其他人如何计算最大有效缩编来跟进?

这计算Max Drawdown.不!最大有效亏损

这是我根据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)

然后,最大亏损是所有计算下降的最小值.

我的问题:

我想通过询问其他人如何计算最大 有效缩编来跟进?

假设解决方案将扩展到上面的解决方案.

python numpy quantitative-finance pandas

12
推荐指数
1
解决办法
3687
查看次数

我在哪里可以找到高分辨率的财务数据

我正在编写一些机器学习软件用于公平,并希望找到一些刻度数据或至少3或5分钟的数据.

我想有一到两年的时间进行测试.

我并不真正关心数据的交换,只要它来自某个主要交易所.

还有哪里可以连接到延迟'实时'数据的数据流?

数据不一定是免费的,但免费更好:-)

finance networkstream quantitative-finance

10
推荐指数
1
解决办法
6118
查看次数

9
推荐指数
1
解决办法
1833
查看次数

R中的quantstrat:设置基于日期的退出信号

许多量子计和附带的例子似乎是通过交叉某种技术指标来围绕进入和退出交易.

但是,假设你有一个任意指标,你用它来触发交易进入,但是你想在第二天开盘或收盘时解除交易.你最好如何实现这个例子?

我们来看下面的例子:

  • 两种仪器:XYZ和ABC
  • 进入信号:可以是任何东西 - 我们只想在我们的"信号"评估为真时进入交易.对于这个例子,假设任何时候XYZ/ABC的比率在T + 0从开放到关闭的任一方向变化超过1%
  • 退出信号:市场活动,如开盘或平仓.让我们说,在这个例子中,我们想要在第二天开放时解除我们在上面设置的交易.

例如,使用blotter这样的东西写相对容易:

假设ratio用列调用xts对象:

  1. ABC OHLC,
  2. XYZ OHLC,
  3. ABC/XYZ的比率表示为OHLC
  4. 货币OHLC"CCY"(这是一个交叉货币对)
  5. 我们的指标(OpCl(ABC/XYZ)),
  6. "发出信号?" 如果指标> 1%,则评估为1,否则评估为0
  7. "信号dn?" 如果指标<-1%,将评估为1,否则为0

我们的代码将是:

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)

r quantitative-finance xts quantmod quantstrat

8
推荐指数
1
解决办法
2186
查看次数

如何在Pyalgotrade中使用多种工具创建复合策略?

我正在使用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

8
推荐指数
1
解决办法
1268
查看次数