gpt4 book ai didi

algorithm - 随机创建给定大小的投资组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:39 26 4
gpt4 key购买 nike

共有 100 种不同的股票可供选择。每只股票都有一个价格 p_i,我想为模拟目的创建随机投资组合。投资组合的总值(value)需要为 1,000,000 美元(给予或接受 100 美元),并且投资组合中不同股票的数量也可以是随机的(例如,投资组合可以做多 20 只股票)。我正在努力创建“一个好的”算法来做到这一点。

这不是真正的背包问题,因为没有什么需要优化的。它有点像随机样本,但又不完全是。所以我想知道我可以使用什么算法来解决这个问题。有什么想法吗?

最佳答案

  • 从所有股票中选择 N 只股票
  • 生成 N 个随机 float ,X_1,...,X_N,介于 0 和 1 之间
  • 令 T = 数字之和 = X_1 + ... + X_N。如果 T 等于 0,则重复步骤 1。
  • 标准化数字:X_1 = X_1/T, ... X_N = X_N/T。请注意 总和 X_1 + ... + X_N 现在等于 1
  • W = 总投资组合的值(value)(例如 W = 1000000)
  • X_i * W 美元投资于第 i 股票
  • 因此,第 i 只股票的购买数量为 S_i = X_i * W/p_i

在 Python 中,

import numpy as np
import pandas as pd
pd.options.display.float_format = '{:.2f}'.format

N = 100
W = 10**6
portfolio_size = np.random.randint(1, N+1)
df = pd.DataFrame({'price': np.random.uniform(1, 100, size=(N,))})
df = df.iloc[np.random.choice(N, portfolio_size, replace=False)]
while True:
df['value'] = np.random.random(portfolio_size)
T = df['value'].sum()
if T != 0: break
df['value'] *= W/T
df['shares'] = df['value']/df['price']
df.index.name='stock num'
print(df)
print('Total value of portfolio: {}'.format(df['value'].sum()))

产生类似的东西

           price     value  shares
stock num
0 34.52 65296.14 1891.72
24 6.82 13008.12 1906.35
83 15.56 100550.05 6463.14
12 60.35 30366.58 503.17
77 76.75 100814.58 1313.49
36 96.50 85649.01 887.53
51 26.28 96860.06 3685.21
9 43.22 31757.96 734.87
56 67.33 19889.57 295.40
66 79.99 30343.49 379.34
21 1.45 1718.19 1187.56
30 34.48 33604.31 974.65
52 80.15 64579.28 805.71
55 41.02 10226.60 249.29
40 8.49 25755.19 3032.82
20 89.46 102164.38 1142.06
5 45.94 42620.16 927.71
73 96.17 6021.88 62.62
58 60.00 24133.96 402.21
45 40.59 114640.49 2824.31
Total value of portfolio: 1000000.0

关于algorithm - 随机创建给定大小的投资组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com