美股市场相对于A股市场来说会更加成熟,美股投资者也相对更加成熟,所以量化交易在美股市场是非常吃香的,美股每天的交易量,大概有70%以上都是量化交易,那假如我们做美股,也想做量化交易,美股量化交易接口要怎么找呢?
首先,官方的美股量化接口肯定是有的,像是MATLAB +ib,Quantopian + IB都可以,不过有些现在好像都已经改版了,没有做了,具体还有其他的一些,也可以到富途或老虎证券上问问,应该也能找到合适的。不过如果真的想做美股量化,还是自己编程会实际得多,下面是小编找到的一组代码:
import pandas as pd
from tquant.pipeline import Pipeline
from tquant.pipeline.data import Fundamentals, USEquityPricing
# 策略初始化方法, 只在开始执行回测时运行一次
def initialize(context):
print('初始化策略')
# 使用 标普500 ETF 作为策略基准
set_benchmark(symbol('SPY'))
# 设置策略的佣金规则:每股0.01美元, 最低1美元
set_commission(commission.PerShare(cost=0.01, min_trade_cost=1))
# 定义两个时区
context.remote_time_zone = 'US/Eastern'
context.local_time_zome = 'Asia/Chongqing'
# 定时运行方法:
# 设置『month_start』这个方法在每个月初的第一个交易日开盘时执行一次。
schedule_function(month_start,
date_rule=date_rules.month_start(),
time_rule=time_rules.market_open())
# 初始化 pipeline 对象
pipe = Pipeline()
# 向 pipeline 对象中添加两列数据:收盘价和总股本
pipe.add(USEquityPricing.close.latest, 'close')
pipe.add(Fundamentals.shares.latest, 'shares')
# 添加一个筛选器:使用成交量最大的200只股票
screener = (USEquityPricing.volume.latest.top(200))
pipe.set_screen(screener)
# 注册pipeline对象
attach_pipeline(pipe, 'universe')
# 实现之前定义的month_start方法
def month_start(context, data):
# 获取pipeline 的数据,
# universe 是一个dataframe, index 是股票池, column 是数据列
# index 每次计算时,交易量最大的200只股票
universe = pipeline_output('universe')
# 计算市值,市值=总股本*收盘价
universe['market_cap'] = universe['close'] * universe['shares']
# 去除其中收盘价小于5的股票, 并取市值最小的10只股票
target_stock = universe[universe['close']>5].sort_values('market_cap', ascending=True) ['market_cap'][:10]
# 计算股票的目标调仓权重
target_weight = target_stock/target_stock.sum()
# 打印结果
print('当前的日期是:', context.get_datetime(context.local_time_zome))
print('目标调仓权重为:', target_weight)
# 调仓
reblance(context, target_weight)
def reblance(context, target_weight):
# 取当前持仓的所有股票
current_position = context.portfolio.positions.keys()
# 计算当前持仓的股票与目标调仓股票的差集
sell = set(current_position) - set(target_weight.index)
# 卖出不在目标调仓中的股票
for code in sell:
order_target_percent(code, 0)
# 按照目标权重, 使用市价单下单
for code in target_weight.keys():
order_target_percent(code, target_weight[code])
log.info('调仓完成')
这种代码可以帮助投资者在去股池中除价格最低的5只股票,然后选择市值最少的进行交易,每个月去调仓一次,而权重则是根据市值而定的。
市场上还有其他提供美股交易接口的平台,这些平台不但针对美股,A股、港股都可以做,可以直接用人民币交易,甚至可以加杠杆,不过有虚拟风险,所以大家选择时一定要小心谨慎。
文章为作者独立观点,不代表股票自动交易程序化数据接口观点