Developing the Sector Allocation Chart
Developing the Sector Allocation Chart
Article summary
Did you find this summary helpful?
Thank you for your feedback
In this example we look at how to create the Sector Allocation chart. We will be using the DEMO_HoldingsDetails Block for this purpose (refer the Transformation Block sample at the end). Below guideline shows how to create the Data Object and fabricate the Asset Allocation Pie Chart.
Give an appropriate name for the Data Object
Set your Source Data Block
Apply Data Settings one by one
Set the Column names one by one as needed and we only need below 3 Columns
Set the Grouping as shown below
Set the Summary as shown below
Fabricating the table (2 Columns by 3 Rows table structure)
Fabricating the Sector Allocation Pie Chart
Insert a native PowerPoint Pie Chart and fabricate as shown below
Sample Python Transformation Block (DEMO_HoldingsDetails)
object_blueprint= {"PORTFOLIOCODE":"",
"CURRENCYCODE":"",
"CURRENCY":"",
"ISSUERNAME":"",
"ISSUENAME":"",
"ISSUEDISPLAYNAME":"",
"COSTBASIS":"",
"QUANTITY":"",
"MARKETVALUEWITHOUTACCRUEDINCOME":"",
"ACCRUEDINCOME":"",
"MARKETVALUE":"",
"LOCALMARKETVALUE":"",
"UNREALIZEDGAINSLOSSES":"",
"DIVIDENDYIELD":"",
"ESTIMATEDANNUALINCOME":"",
"HOLDINGSPERIOD":"",
"PORTFOLIOWEIGHT":"",
"PRICE":"",
"BOOKVALUE":"",
"LOCALBOOKVALUE":"",
"ASSETCLASSNAME":"",
"ISSUETYPE":"",
"ISINCODE":"",
"CUSIP":"",
"FIGIID":"",
"TICKER":"",
"RISKCOUNTRYCODE":"",
"RISKCOUNTRY":"",
"HQCOUNTRYCODE":"",
"HQCOUNTRY":"",
"ISSUECOUNTRYCODE":"",
"ISSUECOUNTRY":"",
"REGIONCLASSIFICATIONSCHEME":"",
"REGIONNAME":"",
"PRIMARYSECTORSCHEME":"",
"PRIMARYSECTORNAME":"",
"PRIMARYSUBSECTORNAME":"",
"PRIMARYINDUSTRYGROUPNAME":"",
"PRIMARYINDUSTRYNAME":"",
"PRIMARYSUBINDUSTRYNAME":"",
"SECONDARYSECTORSCHEME":"",
"SECONDARYSECTORNAME":"",
"SECONDARYSUBSECTORNAME":"",
"SECONDARYINDUSTRYGROUPNAME":"",
"SECONDARYINDUSTRYNAME":"",
"SECONDARYSUBINDUSTRYNAME":"",
"CUSTOMCLASSIFICATION1":"",
"CUSTOMCLASSIFICATION1NAME":"",
"PERCENTAGE":"",
"UNITCOST":""
}
AccountCode = ""
AsofDate = ""
CurrencyCode=""
SectorScheme=""
WithCash=""
ShowCash=""
if (params.__len__() > 0):
AccountCode = params["AccountCode"]
AsofDate = params["AsofDate"]
CurrencyCode=params["CurrencyCode"]
SectorScheme=params["SectorScheme"]
WithCash=params["WithCash"]
ShowCash=params["ShowCash"]
basedata_df = pd.DataFrame(read("DEMO_SnowFlakeHoldingsDetailsExtract",{"AccountCode": AccountCode, "AsofDate": AsofDate, "CurrencyCode":CurrencyCode, "SectorScheme":SectorScheme})["data"])
currencycode=read("DEMO_SnowflakeGetPortfolioBaseCurrency",{"AccountCode": AccountCode})["data"]
baseCurrencyCode=currencycode[0]["BASECURRENCYCODE"]
baseCurrencyName=currencycode[0]["BASECURRENCYNAME"]
# Include or Exclude Cash
# data_df= pd.DataFrame()
if WithCash== "yes":
data_df=basedata_df
else:
data_df = basedata_df.loc[basedata_df['ASSETCLASSNAME'] != 'Cash and Equiv.'].reset_index()
# Convert String Market Value into Float
data_df["MARKETVALUE"] = data_df["MARKETVALUE"].astype(float)
data_df["COSTBASIS"] = data_df["COSTBASIS"].astype(float)
data_df["QUANTITY"] = data_df["QUANTITY"].astype(float)
# calculate total marketvalue
# totalMV=0.00
total_mv = data_df["MARKETVALUE"].sum()
data_df['TotalMV']=total_mv
data_df['PERCENTAGE'] = data_df.apply(lambda row: row["MARKETVALUE"]/row["TotalMV"], axis=1)
data_df['UNITCOST'] = data_df.apply(lambda row: row["COSTBASIS"]/row["QUANTITY"], axis=1)
if WithCash == "yes" and ShowCash != "yes":
data_df = data_df.loc[data_df['ASSETCLASSNAME'] != 'Cash and Equiv.']
del_column_list = []
for col_name in data_df.columns:
if col_name not in object_blueprint.keys():
del_column_list.append(col_name)
data_df = data_df.drop(del_column_list, axis=1)
output_list = data_df.to_dict(orient='records')
# Add output paramets
outputValue = dict()
outputValue["BaseCurrencyCode"] = baseCurrencyCode
outputValue["BaseCurrencyName"] = baseCurrencyName
response["data"] = output_list
response["values"]= outputValue