联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2024-04-26 09:47

Part A: Q2: Strategy Analysis (25 marks)

You are a research analyst for AlphaMasterFOF a ‘fund of funds’. This is a type of fund that invests in other

hedge funds.

Your fund is considering investing in a strategy that has been trading for several years.

The live performance record of the strategy is in the file ‘Strategy_returns.xlsx’.

The returns of the S&P 500, are in ‘SP 500 returns.xlsx’.

The values of a relevant index, the HFRI Macro CTA index, are in ‘hfri_index.xlsx’.

The mandate for the allocation is as follows:

• Strategy Annual Sharpe Ratio over 0.8

• Low correlation with the S&P 500

• Low Beta and high Alpha compared to the S&P 500

• High correlation with the CTA index

• Strategy Annual return standard deviation volatility between 15% and 25%

• Strategy employing good risk management, evidenced by a stable annual volatility year on year (YoY).

9

Part A: Q2: Strategy Analysis (25 marks)

a) Load the "strategy_returns.xlsx” file in Q2_data folder . Save this as a DataFrame variable called strat_ret (0.5 marks)

b) Calculate the skew and kurtosis on the strategy returns. Print results to screen. Plot a histogram of returns and comment on the strategy returns distribution.

Round results to four decimal places. (1.5 marks)

c) Calculate the daily mean, standard deviation and Sharpe Ratio. Assume daily risk free is zero. Print results to screen. Format outputs to correct units. Round results

to four decimal places. (1.5 marks)

d) Calculate the annual mean, standard deviation and Sharpe Ratio. Assume annual risk free is zero. Assume 252 days per year. Print results to screen. Format

outputs to correct units. Round results to four decimal places. (1.5 marks)

e) Calculate the daily rolling volatility starting from day 252.Then extract this statistic on the 2nd January each year from 2015 to 2021. Then annualise this value.

Assume 252 days per year. Create a DataFrame. The Index as 2nd January each year 2015 to 2021 as Dates, daily rolling volatility on that date, third column annual

volatility. Print DataFrame to screen. (4 marks)

f) Plot a well formatted displayed bar graph of the Annual Volatility from part e. Show the y axis range from 15% to 20%. Add the data point above each bar on the

chart. (2 marks)

g) Complete an if statement to check if the average annual volatility between 2015 and 2021 from part e is between the lower 15% and upper 25% standard

deviation thresholds as specified by mandate. (1 mark)

h) Load the "SP500_returns.xlsx” file in Q2_data folder. Create a new DataFrame called returns_2 and match the returns of the strategy and S&P500 returns using

the dates from the strategy as the index. Set S&P 500 returns that are nan as zero. (1 marks)

i) Run an OLS regression between the strategy returns and S&P500 market benchmark returns. State which is the dependent and independent variable in a

comment. Save all model results to a DataFrame. Extract Beta, Alpha and R-Squared from regression results to variables. Annualise the alpha. N = 252 days.

Calculate the correlation. Round result values to four decimal places and print to screen. Save all regression results to a csv or xlsx file. (3 marks)

j) Load the "hfri_index.xlsx” file in Q2_data folder. Calculate the HFRI simple percentage returns. Calculate the cumulative strategy daily returns and rebase this so

begins with 1. Create a new DataFrame called returns_3 and match the index of the rebased cumulative strategy returns to the HFRI index returns using the

monthly dates from the HFRI. Note: There should be no NaN’s in the matched DataFrame. Hint: If the strategy rebased dates do not match the HFRI monthly dates

exactly in the DataFrame index you will need to get the last monthly value return from the strategy cumulative rebased returns dates. (4 marks)

k) Run an OLS regression between strategy returns and HFRI market benchmark returns. State which is the dependent and independent variable in a comment. Save

model results to a DataFrame. Extract Beta, Alpha and R-Squared from regression results to variables. Annualise the alpha. N = 252 days. Calculate the correlation.

Round result values to four decimal places and print to screen. Note: HFRI price indexes are monthly. Save all regression results to an cs or xlsx file. (3 marks)

l) Discuss the difference in results between part i and k in a comment. Is the strategy meeting the mandate requirements? Maximum 300 words. (2 marks) 10

Part A: Question 3: Wilder’s Smoothing Relative Strength Index

(RSI) and Statistics1 (25 marks)

11

• Do not use libraries for the RSI technical indicator.

• Write the mathematics for the Wilder Smoothing RSI indicator yourself.

• Write the functions and mathematics for portfolio metrics

• Use log returns

a) Load the FB data from the excel file provided in folder Q3_Data. (0.5 mark)

b) Load the SPY (benchmark) data from the excel file provided in folder Q3_Data. (0.5 mark)

c) Extract FB Adjusted Close and create a new DataFrame called close. (0.5 mark)

d) Write a function to calculate Wilder’s smoothing RSI on the FB Adjusted Close (See Screenshot

to right for mathematics). Use N = 14. Save these results to the DataFrame called close. (4

marks)

e) Calculate the signals based off the below condition: (2 marks)

• RSI < 30 = BUY

• RSI > 70 = SELL

*Note: 30 & 70 are the default parameters.

N = 14 (setting default window)

f) Plot the RSI signal and graph adjusted stock close price in separate plots. Save graph. (2 marks)

Part A: Question 3: Wilder’s Smoothing Relative Strength Index (RSI)

and Statistics2 (25 marks)

g) Calculate the log returns for adjusted close for the stock (FB) and the benchmark (SPY). (0.5 mark)

h) Calculate the strategy returns. The basic idea is that the algorithm can only set up a position in the stock given today’s market data (e.g., just before the close). The position then earns tomorrow’s return. (0.5 mark)

i) Calculate cumulative returns for buy and hold the stock, the strategy and the benchmark. Double check your result with various approaches and print the final

cumulative returns to screen. (1 mark)

j) Plot cumulative returns from the log returns for buy and hold the stock, the strategy and the benchmark. (0.5 mark)

k) Calculate descriptive statistics on the stock, the strategy and benchmark returns. Save to a DataFrame. (0.5 mark)

l) Optimise the RSI with the below condition ranges: (3 marks)

• rsi_buy between 0 and 30 with increment 1

• rsi_sell between 70 and 100 with increment 1

• n_window between 2 and 21 with increment 1

• Hint: Due to computational time, test optimal parameters with increment 10 first.

• Time the optimisation in seconds and minutes and print to screen.

• The optimised results should generate a DataFrame showing the RSI Buy, RSI Sell, N Window, market returns, strategy returns and outperformance.

• Note: Outperformance is Strategy Returns – Market Returns

m) Sort the optimised parameter results on outperformance. Save results to an excel file. (0.5 mark)

n) Extract the optimal parameters (0.5 mark)

o) Rerun the optimal parameter strategy. Plot the RSI and signals and cumulative return graphs. Re-calculate the cumulative performances using the optimal

parameters. (2 marks)

12

Part A: Question 3: Wilder’s Smoothing Relative Strength Index (RSI)

and Statistics3 (25 marks)

p) Isolate the optimal strategy returns and calculate the below performance statistics on this strategy and the benchmark: Assume risk free =

0 and 252 days per year. Format to 2 decimal places. Write functions and store all results in a DataFrame and save to excel. Do not use a

library. (4 marks)

i. Sharpe Ratio

ii. Sortino Ratio

iii. Compound Annual Growth Rate (CAGR)

iv. Annual Volatility

v. Calmar Ratio

vi. Maximum Drawdown

vii. Skewness (4dp)

viii. Kurtosis (4dp)

q) Calculate the number of total trades, long trades and short trades for the optimal strategy. Save as a DataFrame. (2 marks)

r) Plot a histogram of the optimal strategy returns vs benchmark returns. (0.5 mark)

13


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp