aboutsummaryrefslogtreecommitdiffstats
path: root/python/exploration/curve_trades.py
blob: 4e99fc9444cb8b6e9d40b594610ca8c07d4a8d6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from index_data import get_index_quotes, index_returns
import pandas as pd
import math

## look at spreads
df = get_index_quotes("IG", [23, 24, 25, 26, 27], tenor=['3yr', '5yr', '7yr', '10yr'])
spreads = df.groupby(level=['date', 'tenor']).nth(-1)['closespread'].unstack(-1)
# remove 'yr'
spreads.columns = [int(col[:-2]) for col in spreads.columns]
spreads = spreads.sort_index(1)
spreads_diff = spreads.diff(axis=1)
spreads_diff = spreads_diff.filter([5, 7, 10])
spreads_diff.columns = ['3-5', '5-7', '7-10']
spreads_diff.plot()

## look at returns
df = index_returns(index='IG', series=[24, 25, 26, 27, 28], tenor=['3yr', '5yr', '7yr', '10yr'])
## on-the-run returns
returns = df.price_return.unstack(-1).dropna().groupby(level='date').nth(-1)
<<<<<<< Updated upstream
strategy510 = returns['5yr'] - 0.56 * returns['10yr']
strategy710 = returns['7yr'] - 0.75 * returns['10yr']
strategy3510 = -2*returns['3yr']+3*returns['5yr'] - returns['10yr']
=======
strategy510 = 1.78 * returns['5yr'] - returns['10yr']
strategy710 = 1.33 * returns['7yr'] - returns['10yr']
strategy3510 = -2 * returns['3yr']+ 3 * returns['5yr'] - 1 * returns['10yr']

>>>>>>> Stashed changes
monthly_returns510 = strategy510.groupby(pd.TimeGrouper(freq='M')).agg(lambda df:(1+df).prod()-1)
monthly_returns710 = strategy710.groupby(pd.TimeGrouper(freq='M')).agg(lambda df:(1+df).prod()-1)
monthly_returns3510 = strategy3510.groupby(pd.TimeGrouper(freq='M')).agg(lambda df:(1+df).prod()-1)

sharpe510 = strategy510.mean()/strategy510.std()*math.sqrt(252)
sharpe710 = strategy710.mean()/strategy710.std()*math.sqrt(252)
sharpe3510 = strategy3510.mean()/strategy3510.std()*math.sqrt(252)

monthly_sharpe510 = monthly_returns510.mean()/monthly_returns510.std()*math.sqrt(12)
monthly_sharpe710 = monthly_returns710.mean()/monthly_returns710.std()*math.sqrt(12)
monthly_sharpe3510 = monthly_returns3510.mean()/monthly_returns3510.std()*math.sqrt(12)

worst_drawdown510 = strategy510.nsmallest(10)
worst_drawdown710 = strategy710.nsmallest(10)
worst_drawdown3510 = strategy3510.nsmallest(10)