업데이트 : 다음은 전체 질문 (전체 양식이 약간 복잡함)입니다. 여기에 슈퍼 단순화 된 버전이 있습니다 (이는 내가 묻는 것의 핵심입니다). 내가 49와 17의 무게를 주라고 말하면 66 (49 + 17)을 받아 66을 나누어 계산합니다 (49/66 = 74 %와 17/66 = 26 %). 내 질문은 위의 숫자에 -27을 음수로 추가하면 음수를 사용할 수없는 경우 어떻게 처리하겠습니까?부정적인 수익률로 포트폴리오 가중치를 계산하는 알고리즘?
나는 어떻게 든 전체적인 무게에서 음수를 나타낼 필요가 있지만, 음의 가중치는 내 수를 내고있다. 39 (49 + 17 + -27), 원인 39/39 = 1.25 %, 17/39 = 44 % 및 -27/39 = -69 %이다. 그래서 아래의 예에서 만약 이것이 주식이라면 나는 당신에게 100 달러를 줬습니다.
알고리즘 (또는 논리를 수행하는 방법)을 파악하는 데 문제가 있습니다.
Stock percent of return Return
Blue .98 50
Red .85 20
Black .90 -30
그것은 기본적으로 우리는 50 %의 수익률 0.98 %, 20 %에서 수익의 85 %와 -30에서 수익의 90 % (이 경우 총을 원하는 말을 보고서 우리를 제공 39 %). 나는 이것을 실제 포트폴리오로 어떻게 변환하는지 확신 할 수 없다. (이미 펀드를 갖고 있지 않다면이 금액을 얻기 위해 얼마를 사야 할까?)
저는 이것이 가능하지 않다고 느끼기 시작했습니다.하지만 위의 테이블 (이름, 반환 및 캡처하려는 수익률)과 100 달러를 제공 할 수있는 방법을 기본적으로 묻습니다. 50 %의 주식을 한 개만 주었고 수익의 100 %를 원한다고 말하면 쉽게 단일 주식 100 달러를 살 수 있습니다. 두 주식을 사용하면 총 수익률/가중치를 더할 수 있지만 어떻게 할 수 있습니까? 당신이 포착하고자하는 부정적인 수익을 다루는가?
나는이 권리를 얻지 못하고 있지만 여기까지는 내 논리가있다. (이것이 완전히 잘못 되었다면 무시하고 원하는 것을 제안하십시오.)
Get list of data
total_return = multiple percent_of_return and return (do this as a recursion for all stocks in the list)
take total of all items in total_return (using absolute numbers..no negatives so above 39 equals 42) and figure out the weight of each from that.
multiply these weights by stock price and divide by total to give weight.
이 결과는 (주 : 93 %로 39 %로 변경 합계)이다
Blue 0.52688172
red 0.182795699
black 0.290322581
문제, (A) 내로 네거티브 가중치를 변환하는 경우 정말 확실 해요 절대 (양) 중량. 나는 수학에 (그리고 최악의 재정으로) 좋지 않지만 부정적인 수익률의 퍼센트를 '사는 방법'을 확신하지 못합니다. (저는 두 가지 데이터 포인트를 얻었지만, 재고가 필요할 경우 다른 데이터로 그것을 풍부하게 할 수 있습니다. 가격 등). 또한이 포트폴리오를 이미 소유하고 있지 않으므로 기존 포트폴리오에 대해 이러한 가중치를 사용할 수는 없습니다. 위의 정보를 지침으로 사용하여 새 포트폴리오를 작성합니다 (알 고를 알아 내야 함). 하기 위해서).
도와주세요!
업데이트 :
overall_total_value = []
def test(data_return, datacoeff, data_value):
total_results = 0
data_total_of_return = {}
for x in data_return:
current_value = data_return[x] * (datacoeff[x]*.001)
data_total_of_return[x] = current_value
total_results = total_results + current_value
#abs
abs_total_value = 0
for x in data_total_of_return:
#print x, '=', abs(data_total_of_return[x])
abs_total_value = abs_total_value + abs(data_total_of_return[x])
print abs_total_value
weight = {}
for x in data_total_of_return:
weight[x] = abs(data_total_of_return[x]/abs_total_value)
total_value = 0
for x in weight:
valuer = weight[x] * data_value[x]
print x, weight[x], '=', valuer
total_value = total_value + valuer
print 'ABS total % return: ',total_results
print total_value
overall_total_value.append(total_value)
print "*"*30
data_return = {'Blue':50, 'Red':20, 'Black':-30}
data_value = {'Blue':10.4, 'Red':4, 'Black':8}
datacoeff = { "Blue": 78 , "Red": 0 , "Black": 0 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 48 , "Red": 75 , "Black": 0 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 46 , "Red": 80 , "Black": 0 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 38 , "Red": 100 , "Black": 0 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 62 , "Red": 100 , "Black": 40 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 100 , "Red": 20 , "Black": 50 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 98 , "Red": 55 , "Black": 70 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 90 , "Red": 75 , "Black": 70 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 100 , "Red": 65 , "Black": 80 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 98 , "Red": 70 , "Black": 80 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 96 , "Red": 75 , "Black": 80 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 94 , "Red": 80 , "Black": 80 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 92 , "Red": 85 , "Black": 80 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 90 , "Red": 90 , "Black": 80 , }
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 88 , "Red": 95 , "Black": 80 , }
test(data_return, datacoeff, data_value)
test(data_return, datacoeff, data_value)
datacoeff = { "Blue": 98 , "Red": 100 , "Black": 100 , }
test(data_return, datacoeff, data_value)
당신이 찾고있는 것이 분명하지 않습니다. @icemanind가 대답 한대로 절대 값을 취하면 "음수 값이 아닌"결과를 얻을 수 있습니다. 나는 수학을 할 때, .527, .183, .290으로 가중치를 얻습니다. 이게 니가 찾고있는거야? 일부 컨텍스트와 정밀도가 더 좋은 대답을 얻는 데 도움이 될 것입니다. 제 생각에 – mfrankli
@mfrankli가 작동 할 수 있습니다. 어떻게 그 숫자를 얻었습니까? abs로 내 forumla을 둘러싼 약간 다른 숫자를 주었다. 기본적으로 나는 위의 숫자를 사용하여 질문에 대답하려고 노력하고 있는데, 어떻게 각각 동일한 구조/결과를 얻을지 알아낼 수 있습니다. 모든 숫자가 사후 적이라면 나는 그것들을 모두 더하고 합계로 나눌 수 있습니다. 그러나 음수는 나를 버리고 있습니다. –