Skip to content

Commit

Permalink
minor fixs
Browse files Browse the repository at this point in the history
  • Loading branch information
Fconel committed Jul 22, 2021
1 parent 44f3fe0 commit aa6fb9f
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 44 deletions.
Binary file modified __pycache__/get_data.cpython-36.pyc
Binary file not shown.
Binary file modified __pycache__/optimization.cpython-36.pyc
Binary file not shown.
20 changes: 6 additions & 14 deletions get_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,25 @@
from pathlib import Path
import ssl

ssl._create_default_https_context = ssl._create_unverified_context

#Load data from WEB OR CSV
#Load data from WEB
def DataFromWeb(names:list) -> pd.DataFrame:
ssl._create_default_https_context = ssl._create_unverified_context

data = pd.DataFrame()

for _ in range(len(names)):

data_price = pd.read_csv(r'https://www.cryptodatadownload.com/cdd/Binance_'+names[_]+r'USDT_d.csv',header=1) #Load data from cryptodatadownload.com

#Load data from cryptodatadownload.com
data_price = pd.read_csv(r'https://www.cryptodatadownload.com/cdd/Binance_'+names[_]+r'USDT_d.csv',header=1)

#Keep close price anda date
data_price.drop(data_price.columns.difference(['date','close']), 1, inplace=True)

#Rename colums
data_price.drop(data_price.columns.difference(['date','close']), 1, inplace=True) #Keep 'close price' and 'date' fields
data_price.columns = ['date', names[_]]

#Set date as index
data_price.set_index('date', inplace=True)

#Merge data, drop NAN rows and save csv
data = data.join(data_price, how='outer')
data.dropna(inplace= True)

return data

#Load data from CSV
def DataFromCSV(Path: pathlib.Path) -> pd.DataFrame:

data = pd.read_csv(Path, index_col=0)
Expand Down
64 changes: 34 additions & 30 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,38 @@
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

#Parametros
Monedas=['BTC','ETH','LTC']
number_of_portfolios = 10000
RiskFreeRate=0

#Assets Risk/Return
RiskReturn_asset = optimization.RiskByAsset(Monedas,optimization.SimpleReturns)

#Assets Risk/Return graph
fig, ax = plt.subplots()
ax.yaxis.set_major_formatter(FuncFormatter('{0:.0%}'.format))
ax.xaxis.set_major_formatter(FuncFormatter('{0:.0%}'.format))
RiskReturn_asset.plot(x ='Risk', y='Return', kind = 'scatter',ax=ax,title='Return/Risk by asset',alpha=0.5)
for k, v in RiskReturn_asset.iterrows():
ax.annotate(k, v)
plt.grid()

#Portfolio Risk/Retun
MaxSharpeRatioRisk,MaxSharpeRatioReturn,portfolio_risk,portfolio_returns,portfolio_sharpe_ratio= optimization.EfficientFrontier(Monedas,'','',number_of_portfolios,RiskFreeRate,optimization.SimpleReturns)

#Portfolio Risk/Retun graph
plt.figure(figsize=(12, 8))
plt.scatter(portfolio_risk, portfolio_returns, c=portfolio_sharpe_ratio)
plt.colorbar(label='Sharpe Ratio')
plt.xlabel('volatility')
plt.ylabel('returns')
plt.scatter(MaxSharpeRatioRisk, MaxSharpeRatioReturn,c='red', s=50)

#Show graph
plt.show()
def main():
#Parametros
Monedas=['BTC','ETH','LTC']
number_of_portfolios = 10000
RiskFreeRate=0

#Assets Risk/Return
RiskReturn_asset = optimization.RiskByAsset(Monedas,optimization.SimpleReturns)

#Assets Risk/Return graph
fig, ax = plt.subplots()
ax.yaxis.set_major_formatter(FuncFormatter('{0:.0%}'.format))
ax.xaxis.set_major_formatter(FuncFormatter('{0:.0%}'.format))
RiskReturn_asset.plot(x ='Risk', y='Return', kind = 'scatter',ax=ax,title='Return/Risk by asset',alpha=0.5)
for k, v in RiskReturn_asset.iterrows():
ax.annotate(k, v)
plt.grid()

#Portfolio Risk/Retun
MaxSharpeRatioRisk,MaxSharpeRatioReturn,portfolio_risk,portfolio_returns,portfolio_sharpe_ratio= optimization.EfficientFrontier(Monedas,'','',number_of_portfolios,RiskFreeRate,optimization.SimpleReturns)

#Portfolio Risk/Retun graph
plt.figure(figsize=(12, 8))
plt.scatter(portfolio_risk, portfolio_returns, c=portfolio_sharpe_ratio)
plt.colorbar(label='Sharpe Ratio')
plt.xlabel('volatility')
plt.ylabel('returns')
plt.scatter(MaxSharpeRatioRisk, MaxSharpeRatioReturn,c='red', s=50)

#Show graph
plt.show()

if __name__ == '__main__':
main()

0 comments on commit aa6fb9f

Please sign in to comment.