Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中寻找一些关于组合数学的指导_Python_Numpy_Combinatorics - Fatal编程技术网

在python中寻找一些关于组合数学的指导

在python中寻找一些关于组合数学的指导,python,numpy,combinatorics,Python,Numpy,Combinatorics,对于python和编码来说仍然是新手,这次冒险只有6周左右。我启动了一个金融项目,试图找出投资组合中有多少%应该是现金,以及根据当前的市场表现应该投资多少。不知道这项研究是否有任何相关性,但它有助于坚持每一步,学习新事物 对于任何感兴趣的人,这是谷歌合作木星笔记本 在步骤4中,我尝试运行sorta组合数学模拟。我一直在阅读,但对于我需要从哪里开始,我有点不知所措。只是想找一些指导,比如我应该研究什么术语或东西,来解决这个具体问题 此外,我们还看到了一个叫做tpot的东西,它对组合数学有好处吗

对于python和编码来说仍然是新手,这次冒险只有6周左右。我启动了一个金融项目,试图找出投资组合中有多少%应该是现金,以及根据当前的市场表现应该投资多少。不知道这项研究是否有任何相关性,但它有助于坚持每一步,学习新事物

对于任何感兴趣的人,这是谷歌合作木星笔记本

在步骤4中,我尝试运行sorta组合数学模拟。我一直在阅读,但对于我需要从哪里开始,我有点不知所措。只是想找一些指导,比如我应该研究什么术语或东西,来解决这个具体问题

此外,我们还看到了一个叫做tpot的东西,它对组合数学有好处吗

组合数学问题

目前,在步骤3中,我为市场上的各种下跌做了一个预定义的循环。看起来像这样

   if (current_market_status == 0):  # all time high record
        current_cash_required_equity = 0.3
    elif (current_market_status < -0.05): #less than 5%
        current_cash_required_equity = 0.25
    elif (current_market_status < -0.10): #less than 10%
        current_cash_required_equity = 0.20 
    elif (current_market_status < -0.15): #less than 15%
        current_cash_required_equity = 0.15
    elif (current_market_status < -0.20): #less than 20%
        current_cash_required_equity = 0.10
    elif (current_market_status < -0.25): #less than 25%
        current_cash_required_equity = 0.05
    elif (current_market_status < -0.30): #less than 30%
        current_cash_required_equity = 0
所以组合数学的规则是

  • 对于每个市场状态,从最高到最低尝试现金需求
  • 首先,如果语句是0.50,那么下一个语句只能是0.5-0
  • 第二,如果语句let say是0.45,那么下一个只能是0.45-0
  • 比如,如果市场状态为0,我们需要50%的现金。然后下降5%,我们现在需要40%的现金。然后再下跌5%——10%,我们只需要40%到0%的现金。如果市场下跌只是为了保持不变或下跌,我们无法增加所需现金。我们的想法是,市场折扣越多,我们应该保留的现金就越少。因此,我们应该投资越多,市场越便宜,投资越少,市场越高。整个模拟从10000开始,每月向投资组合添加1000


    提前感谢所有花时间阅读本文并发布一些文档链接或建议的人。

    我不理解这个问题,我想你应该熟悉这里的一些概念。如果你能把你的问题表达得更简单、更简短,我会帮你的。也许只是我的无能

    我会尽量给你我的2美分,根据你我可以理解从张贴

    首先,我想指出,您初始化列表的方式不是最佳的。Numpy有两个非常重要的功能:

  • np.linspace:

  • np.arange:

  • 因此,例如,您应该用简单的一行numpy调用替换您的期权市场状态初始化:
    np.arange(0.5,-0.02,-0.01)

    现在,如果我理解了你的主要问题,那就是如何迭代
    options\u market\u status
    options\u cash\u req
    ,使得
    options\u market\u status
    中的元素大于或等于
    options\u cash\u req
    选项,对吗? 由于它们在你的问题中具有相同的值,我将给出一个一般的解决方案。如果给我们一个数组
    a
    ,并希望在嵌套循环中对其进行迭代,那么一个解决方案可以是:

    a = np.arange(0.5, -0.01, -0.01)
    for i in range(len(a)):
        first_element = round(a[i], 2) # this is the 1st element, rounded to 2 digit
        for j in range(i, len(a)):
            second_element = round(a[j], 2) # same with 2nd element
            print(first_element, second_element) # you can replace this with your function
    
    我希望我正确地理解了你的问题,并且没有解释你已经知道的事情。
    祝你好运

    感谢您的详细回复!我想你用那个代码解决了我的问题,我今天就用它来做实验。再次感谢!再次感谢您的帮助!一旦完成运行,我将使用最终结果更新github。这似乎需要几个小时哈量:)B.T.W如果不需要几个小时运行,您可能需要上传另一个问题,您可能会发现编写算法的更好方法:)啊,非常好的一点,会这样做:)再次感谢您的帮助
    a = np.arange(0.5, -0.01, -0.01)
    for i in range(len(a)):
        first_element = round(a[i], 2) # this is the 1st element, rounded to 2 digit
        for j in range(i, len(a)):
            second_element = round(a[j], 2) # same with 2nd element
            print(first_element, second_element) # you can replace this with your function