如何在 pandas 数据帧中编写简单的信号逻辑?
How to code a simple signal logic in pandas dataframe?
我想创建一个简单的交易系统信号 table,数据框如下:
Close buy sell
2011-01-31 50 0 0
2011-02-28 40 1 0
2011-03-31 50 0 0
2011-04-30 80 0 -1
2011-05-31 60 1 0
2011-06-30 50 1 0
2011-07-31 20 0 0
2011-08-31 30 0 -1
信号以下列方式生成:
df['buy'] = np.where( <condition> , 1, 0 )
sell
列以同样的方式创建。
问题是 2011-06-30 的双重买入信号,紧接在 2011-05-31 的前一个信号之后。
2011-05-31 60 1 0
2011-06-30 50 1 0
如何在 df['sell']
列中用 -1 关闭之前阻止新的买入 (== 1) 信号?
我怎样才能防止...?
好吧,一旦需要更复杂的东西,而不是简单的 numpy
矢量化/广播/条件操作,类似于所述 np.where( <condition> , 1, 0 )
必须实现一些特定于自定义的功能,以处理这些附加功能,而有限状态自动机可能会很好地用于此类目的。
但是如何实现呢?
简而言之,您的条件已经超出了简单 vectorised/broadcast 矩阵运算的表达能力,贸易管理子系统已经开始具有内部行为、SEQ 行为和一些附加规则内部 -transition(s) 和 -transition-restrictions.
很难指望通用的通用工具,numpy
-矩阵和pandas
- DataFrame 实例被过度设计以支持此类特定于问题域的功能,以便原型化算法交易策略模拟。
最好选择一些特定于交易的工具来满足此类需求,或者期望必须实施 SEQ 行为迭代器函数,这将促进所需的逻辑(智能 numpy 矢量化/广播的 none表达式或 pandas 一行就足够了。
Scope?
for those really interested in a rapid prototyped Trading Strategy example, using a FSA-based implementation method, check the simplicity of such system design + built-in ( script-based ) automated conformance-testing capability + line numbers for an estimate of the code-span ( definitely not a numpy
SLOC ):
我参加聚会有点晚了,但我希望这对您有所帮助。我想你想要备用 1 和 -1。虽然不是最好的方法,但我建议您添加买入和卖出信号并将新列称为交易信号。交易信号列将以任意方式具有 0、1 和 -1。以下代码解释了进一步的步骤。
import pandas as pd
import numpy as np
trade_signal= pd.DataFrame([1,1,0,0,-1,-1,1,1,-1])
ts_shifted=trade_signal.shift(1)
trade_rule=np.where(trade_signal!=ts_shifted,trade_signal,0)
我想创建一个简单的交易系统信号 table,数据框如下:
Close buy sell
2011-01-31 50 0 0
2011-02-28 40 1 0
2011-03-31 50 0 0
2011-04-30 80 0 -1
2011-05-31 60 1 0
2011-06-30 50 1 0
2011-07-31 20 0 0
2011-08-31 30 0 -1
信号以下列方式生成:
df['buy'] = np.where( <condition> , 1, 0 )
sell
列以同样的方式创建。
问题是 2011-06-30 的双重买入信号,紧接在 2011-05-31 的前一个信号之后。
2011-05-31 60 1 0
2011-06-30 50 1 0
如何在 df['sell']
列中用 -1 关闭之前阻止新的买入 (== 1) 信号?
我怎样才能防止...?
好吧,一旦需要更复杂的东西,而不是简单的 numpy
矢量化/广播/条件操作,类似于所述 np.where( <condition> , 1, 0 )
必须实现一些特定于自定义的功能,以处理这些附加功能,而有限状态自动机可能会很好地用于此类目的。
但是如何实现呢?
简而言之,您的条件已经超出了简单 vectorised/broadcast 矩阵运算的表达能力,贸易管理子系统已经开始具有内部行为、SEQ 行为和一些附加规则内部 -transition(s) 和 -transition-restrictions.
很难指望通用的通用工具,numpy
-矩阵和pandas
- DataFrame 实例被过度设计以支持此类特定于问题域的功能,以便原型化算法交易策略模拟。
最好选择一些特定于交易的工具来满足此类需求,或者期望必须实施 SEQ 行为迭代器函数,这将促进所需的逻辑(智能 numpy 矢量化/广播的 none表达式或 pandas 一行就足够了。
Scope?
for those really interested in a rapid prototyped Trading Strategy example, using a FSA-based implementation method, check the simplicity of such system design + built-in ( script-based ) automated conformance-testing capability + line numbers for an estimate of the code-span ( definitely not anumpy
SLOC ):
我参加聚会有点晚了,但我希望这对您有所帮助。我想你想要备用 1 和 -1。虽然不是最好的方法,但我建议您添加买入和卖出信号并将新列称为交易信号。交易信号列将以任意方式具有 0、1 和 -1。以下代码解释了进一步的步骤。
import pandas as pd
import numpy as np
trade_signal= pd.DataFrame([1,1,0,0,-1,-1,1,1,-1])
ts_shifted=trade_signal.shift(1)
trade_rule=np.where(trade_signal!=ts_shifted,trade_signal,0)