市场交易员经常买卖波动性资产,其目标是使其总回报最大化。每一次买卖通常都有一笔佣金。其中两种资产是黄金和比特币。
要求交易员要求您开发一个模型,该模型仅使用迄今为止过去的每日价格流来确定交易员每天是否应该购买、持有或出售其投资组合中的资产。
你将在2016年11月9日从1000美元开始。您将使用从2016年11月9日至2021年10月9日的五年交易期。在每个交易日,交易员将拥有一个包括现金、黄金和比特币[C、G,B]的投资组合。美元,金衡盎司和比特币。初始状态是[1000、0、0]。每笔交易(买卖)的佣金成本为交易金额的α%。假设α黄金=1%和α比特币= 2%.持有资产没有成本。
请注意,比特币可以每天都进行交易,但黄金只在市场开放的日子里进行交易,这反映在定价数据文件LBMA-GOLD.csv和BCHAIN-MKPRU.csv中。你的模型应该考虑到这个交易时间表。
要开发模型,您只能使用所提供的两个电子表格中的数据: lbma黄金.csv和BCHAIN-MKPRU.csv。
开发一个模型,仅基于当天的价格数据,给出最佳的每日交易策略。使用你的模式和策略,在2021年10月9日开始的1000美元的初始投资值多少钱?
提供证据,证明您的模型是提供最佳策略的。
确定该策略对交易成本的敏感程度。交易成本如何影响策略和结果? 在一份最多两页的备忘录中向交易员传达你的策略、模型和结果。
如需文档和程序请
'''如有问题if you want my model and word'''
'''小编QQ:631183848'''
def __init__(self,board, currentPlayer=1, last_move = [0,0]):
self.board = board #五子棋棋盘
self.currentPlayer = currentPlayer # 执黑还是执白,1是黑,-1是白
self.last_move = last_move # 上一手棋的位置
def getPossibleActions(self):
"""
最开始考虑用以下的代码,但是搜索空间实在是太大了
possibleActions = []
for i in range(len(self.board)):
for j in range(len(self.board[i])):
if self.board[i][j] == 0:
possibleActions.append(Action(player=self.currentPlayer, x=i, y=j))
return possibleActions
"""
# 此处改成在上一手棋周围进行搜索
possibleActions = []
search_size = 1
while len(possibleActions)==0:
for i in range(self.last_move[0]-search_size,self.last_move[0]+search_size+1):
for j in range(self.last_move[1]-search_size,self.last_move[1]+search_size+1):
if i<0 or j<0 or i>=len(self.board) or j>=len(self.board[i]):
continue
if self.board[i][j] == 0:
possibleActions.append(Action(player=self.currentPlayer, x=i, y=j))
search_size+=1
return possibleActions
def takeAction(self, action):
newState = deepcopy(self)
newState.board[action.x][action.y] = action.player
newState.currentPlayer = self.currentPlayer * -1
return newState
def isTerminal(self):
# judge函数引自https://www.jianshu.com/p/cd3805a56585
flag = judge(self.board)
if flag!=0:
return True
# 要注意无处落子的情况
for i in range(len(self.board)):
for j in range(len(self.board[i])):
if self.board[i][j]==0:
return False
return True
'''如有问题if you want my model and word'''
'''小编QQ:631183848'''
def getReward(self):
flag = judge(self.board)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)